红黑树是一棵二叉搜索树,它确保没有一条路径会比其他路径长出2倍,满足以下红黑性质:
1.每个结点或红或黑
2.根结点是黑色的
3.每个叶结点(NIL)是黑色的 (如果一个结点没有子结点或父结点,则该结点相应指针属性的值为NIL)
4.如果一个结点是红色的,则它的两个子结点都是黑色的
5.对每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点
为了便于处理红黑树代码中的边界条件,用哨兵T.nil代表NIL。
黑高:从某个结点出发(不含该结点)到达一个叶结点的任意一条简单路径上的黑色结点个数,记为bh(x)
引理:一棵有n个内部结点的红黑树的高度至多为2lg(n+1)