红黑树学习笔记(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.

 

 

 

 

posted @ 2016-10-29 15:15  朝拜明天19891101  阅读(394)  评论(0编辑  收藏  举报