红黑树是一种含有红黑节点的能够自平衡的二叉查找树。他满足如下性质:
性质1:它的每个节点要么是黑色,要么是红色;
性质2:根节点是黑色;
性质3:每个叶子节点(为NULL空节点),都是黑色;
性质4:不存在两个红色节点相连的情况;(这是由红黑树的插入删除操作保证的)
性质5:任意一个节点到其子树的每个叶子节点的路径都含有相同数量的黑色节点。
性质5推论:如果一个节点存在黑色子节点,那么该节点肯定有两个子节点。
注意:
1、严格的说红黑树不是一个平衡二叉树,它只是一个黑色节点平衡的二叉树。
2、一棵二叉树完全可以通过旋转变为一棵平衡二叉树,但是对于平衡二叉树的插入和删除,都要向上去找最低不平衡点,同时需要更新不平衡系数,虽然是logN数量级的运算,但还是效率不太高;引入红黑节点就是为了能够提高平衡调整的效率。
3、红黑树是通过变色和选择来进行自平衡的。
4、红黑树的删除首先是找替换节点,然后在删除,在进行自平衡调整。
详细链接: