《算法导论》笔记 第13章 13.1 红黑树的性质

【笔记】


红黑树中每一个结点包含五个域:color,key,left,right和p。二叉树

若是某结点没有一个子结点或父结点,则该域指向NIL。im

咱们把NIL视为二叉树的外结点(叶子),而带关键字的结点视为内结点。img


一棵二叉树若是知足下面的红黑性质,则为一棵红黑树:红黑树

1) 每一个结点或是红的,或是黑的。集合

2) 根结点是黑的。时间

3) 每一个叶结点(NIL)是黑的。co

4) 若是一个结点是红的,则它的两个儿子都是黑的。

5) 对每一个结点,从该结点到其子孙结点的全部路径上包含相同数目的黑结点。


采用哨兵来表明NIL,它的color域为BLACK,其它域为任意值。


从某个结点x出发(不包括该结点)到达一个叶结点的任意一条路径上,黑色结点的个数称为该结点x的黑高度,用bh(x)表示。


引理:一颗有n个内结点的红黑树的高度至多为2lg(n+1)。

动态集合操做SEARCH、MINIMUM、MAXIMUM、SUCCESSOR和PREDECESSOR可用红黑树在O(lgn)时间内实现,由于这些操做在一棵高度为h的二叉查找树上的运行时间为O(h),而包含n个结点的红黑树又是高度为O(lgn)的查找树。


【练习】


13.1-1 画出在关键字集合{1,2,...,15}上高度为3的彻底二叉查找树。以三种不一样方式,向图中加入NIL叶结点并对各结点着色,是所得的红黑树的黑高度分别为2,3和4。





13.1-2 画图出调用TREE-INSERT插入关键字36后的结果。若是插入的结点被标为红色,所得的树是否仍是一棵红黑树?若是该节点被标为黑色呢?




黑:不知足性质5)

红:不知足性质4)


13.1-3 定义松弛红黑树为知足红黑性质1,3,4和5的二叉查找树。换言之,根部能够是红色或是黑色。考虑一棵根是红色的松弛红黑树T。若是将T的根部标为黑色而其余都不变,则所获得的是否仍是一颗红黑树?

根部标为黑色,知足了性质2),没有破坏性质4),从根结点到子孙结点上的黑结点数不变性质5)不变。

所以仍是一颗红黑树。


13.1-4 假设将一颗红黑树的每个红结点吸取到它的黑色父结点中,来让红结点的子女变成黑色父结点的子女。当一个黑结点的全部红色子女都被吸取后,其可能的度是多少?此结果树的叶子深度怎样?

不吸取:度为2

吸取一个:度可能为3

吸取两个:度可能为4

叶子深度为红黑树黑高度。


13.1-5 证实:在一棵红黑树中,从某结点x到其后代叶结点的全部简单路径中,最长的一条是最短一条的至多两倍。

设最短路径为k个黑结点:●●●●

由性质4没有连续两个红结点,性质5路径上黑结点数目相同,则最长路径:○●○●○●○●

所以最长的一条是最短一条的至多两倍。


13.1-6 在一棵高度为k的红黑树中,内结点最多可能有多少个?最少可能有多少个?

易知,最多可能有2^2k-1

最少可能有2^k-1


13.1-7 请描述出一棵在n个关键字上构造出来的红黑树,使其中红的内结点数与黑的内结点数的比值最大。这个比值是多少?具备最小可能比例的树又是怎样?此比值是多少?

黑红黑红交替。2:1。

全黑最小。0

相关文章
相关标签/搜索