赞
踩
之前由于大学期末复习耽搁了,同时,对于算法导论,目前已学习到第13章,红黑树,并从这一章节开始继续学习算法导论,并且打算在学习完红黑树后对前面所有章节的习题进行总结梳理。
红黑树(red-black tree)是平衡搜索树中,能够保证在最坏的情况下,基本动态集合操作的时间复杂度为O(lg n)的一种。
一、性质:
1、红黑树确保了么欸有一条路径比其他路径长出2倍,因而是近于平衡的。
2、单个节点的属性: color、key、left、right、p。若节点没有父节点或者子节点,则属性的值为 NIL。
3、红黑性质:
(1)、每个节点都是红色或者黑色。
(2)、根节点是黑色。
(3)、每个叶节点是黑色的。(注:此处的叶节点是指空节点NIL)
(4)、若一个节点是红色,则其两个子节点为黑色。
(5)、对每个节点,从该节点到所有后代叶节点的简单路径上,均包含相同数目的黑色节点(被称为黑高(black-height))。
4、哨兵节点。使用一个哨兵节点代表所有的NIL,则其可代表叶节点NIL,同时代表根节点的父节点NIL,因此,我们把这些所有指向NIL节点的指针都指向该哨兵节点。需要注意的是,哨兵节点本身并不是NIL,相反,它也具有普通节点的属性,其中的color = black, 其他属性可以在后续被设置。
5、黑高:从某个节点出发(不包含该节点),到达一个叶节点的任意一条简单路径上黑色节点个数被称为该节点的黑高,记作bh(x)。
引理1:一棵有n个内部节点的红黑树的高度至多为2lg(n+1)。
证明:先证以任一节点x为根的子树中至少包含2^(bh(x))-1个内部节点:
若高度为0,则x为叶节点NIL,且以x为根节点的子树有0个内部节点,其中0 = 2^(bh(x))-1。在初始条件成立。
现在,考虑一个高度为正值,且有两个子节点的内部节点x,其中子节点的黑高为bh(x)或者bh(x)-1,这取决于自身是否是黑节点。(若是的话则为bh(x)-1)
由于x子节点的高度比x低,因此,由归纳假设,设每个子节点至少有2^(bh(x)-1)-1个内部节点,则节点x至少有2×(2^(bh(x)-1)-1)+2 = 2^(bh(x))个节点,为满足性质,则将其放缩为2^(bh(x))-1,则得到证明。
之后,再设树的高度为h,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。