定义
近似平衡的二叉搜索树
二叉搜索树可能退化成链表,也就有了“平衡”搜索树,树高h=O(log(n)),保证了树高,也就保证了基本操作时间复杂度的稳定性。红黑树是一种“平衡”二叉搜索树。当然不是严格平衡,“红黑树确保没有一条路径会比其他路径长出2倍,因而是近似于平衡的”。
性质或者说定义
- 每个结点或者是红色的,或者是黑色的。
- 根结点是黑色的。
- 每个叶结点(叶结点即指树尾端NIL结点)是黑色的。
- 如果一个结点是红色的,那么它的两个儿子都是黑色的。
- 对每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。
全黑的满二叉树也是红黑树。
黑高,从某结点x出发(不包含该结点)到达任一叶结点的简单路径上黑色结点的个数。红黑树的黑高就是其叶结点的黑高。算法导论后面有习题,黑高k的树,结点数目范围应该是[2k-1,22*k-1],(纯黑满二叉树,树高为k,得到结点数目2k-1;红、黑高度都是k的满二叉树,树高2*k,结点数目22*k-1)
由n>=2k-1,k>=h/2,得到h<=2ln(n+1)。确定红黑树树高的级别,就确定了红黑树基本操作时间复杂度的级别,最坏情况下的时间复杂度都是O(log(n))。
代码
红黑树插入、删除比较麻烦,参考算法导论中的伪代码即可。
参考文档
《算法导论》