本系列为算法导论 第13章 红黑树 学习笔记
RB_Tree是一颗BST,满足:
1. 结点颜色为红或黑。
2. 根结点为黑色。
3. 每个叶结 (NIL) 点是黑色。
4. 不存在2个连续的红色结点
5. 对于任一结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。
先做一些人为的约定:
树根的高度为1;
叶结点指的是
NIL
N
I
L
,内部结点指的是红黑树中出现的结点;
黑高
bh(x)
b
h
(
x
)
不包含
x
x
点,但是包含 ;
为方便起见,我们把所有
NIL
N
I
L
都用一个哨兵结点来代替,如图:
定义:
黑高: 从某个结点
x
x
出发(不含该结点),到达一个叶结点的任一一条简单路径上的黑色结点个数称为该结点的黑高,记为 。
红黑树的黑高:其根结点的黑高。
引理 13.1
一颗有n个内部结点的红黑树的高度至多为
2log(n+1)
2
l
o
g
(
n
+
1
)
。
proof:
先证明一个结论:以任一结点x为根的子树中至少包含
2bh(x)−1
2
b
h
(
x
)
−
1
个内部结点。
归纳法易证。
另一方面,设
h
h
为树的高度,则根的黑高 ,得证。
课后习题:时间比较紧,最后2题没怎么做,到时候再说
13. 1-1
黑高为2:2,4层为红。
黑高为3:某层为红。
黑高为4:无红结点。
13. 1-2
均不是红黑树
13. 1-3
是
13. 1-4
13. 1-5
易知
1+[lmax−12]≤bh(x)≤lmin
1
+
[
l
m
a
x
−
1
2
]
≤
b
h
(
x
)
≤
l
m
i
n
13. 1-6
在一颗高为
h
h
的红黑树中,
内部结点最多有多少个?
2k−1
2
k
−
1
最少可能有多少个?
我写了个递推
xn+1=xn+x⌈n+12⌉+1
x
n
+
1
=
x
n
+
x
⌈
n
+
1
2
⌉
+
1
不保证正确,答案也懒得找了,目测这个解起来颇有难度。
13. 1-7 —过两天再看