红黑树学习笔记(1)
1 红黑树是一种二叉查找树。
2 红黑树的性质。
(1)每个节点是红色或者黑色
(2)根节点是黑色
(3)叶节点是黑色(叶节点就是空节点,实际不存储东西)
(4)每一个红色节点的两个孩子都是黑色节点
(5)对于每个节点,从该节点到任意后代叶子节点经过的黑色节点数相同。
(6)满足二叉查找树的性质,即左子树所有键值小于当前节点键值,右子树所有键值大于当前节点键值。
(7)在满足上面这些条件时,对于有n个内节点(内节点就是不包含叶节点)的红黑树,高度至多为$2log(n+1)$.首先定义一个节点x的黑高为$bh(x)$,表示从x到任意一个叶子节点路径上黑色节点的个数(不包括x)。先证明以某一节点x为根的子树中至少包含$2^{bh(x)}-1$个内节点(不是叶子的都是内节点)。用数学归纳法证明。如果x的高度为0,那么x是叶节点,包含0个内节点,满足该式子。对于高度为正值的x,其两个孩子至少包含$2^{bh(x)-1}-1$个内节点,所以以x为根的子树至少包含$(2^{bh(x)-1}-1)+(2^{bh(x)-1}-1)+1=2^{bh(x)}-1$个内节点。第二步,对于一棵高度为h的树,任意一条从根到叶节点(不包括根)的路径上至少有一半黑色节点,从而$bh(x)\geq \frac{h}{2}$,所以$n\geq 2^{bh(x)}-1\geq 2^{\frac{h}{2}}-1$,即$h\leq 2log(n+1)$
下面是一个红黑树的例子。
3 左旋和右旋操作。对x进行左旋之后将变成右边,对y进行右旋之后会变成左边。
4 后继函数$Successor(u)$为节点$u$的后继结点。后继定义为树中大于该节点的最小的节点。在上图中节21的后继为23,节点17的后继为19,节点23的后继为26.