《算法导论》笔记 第13章 13.1 红黑树的性质
来源:互联网 发布:java图像压缩算法 编辑:程序博客网 时间:2024/04/28 17:12
【笔记】
红黑树中每个结点包含五个域:color,key,left,right和p。
如果某结点没有一个子结点或父结点,则该域指向NIL。
我们把NIL视为二叉树的外结点(叶子),而带关键字的结点视为内结点。
一棵二叉树如果满足下面的红黑性质,则为一棵红黑树:
1) 每个结点或是红的,或是黑的。
2) 根结点是黑的。
3) 每个叶结点(NIL)是黑的。
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
- 《算法导论》笔记 第13章 13.1 红黑树的性质
- 《算法导论》笔记 第6章 6.2保持堆的性质
- 《算法导论》笔记 第24章 24.5 最短路性质的证明
- 算法导论13.1红黑树的性质 练习总结
- 算法导论——13.1红黑树的性质
- 算法导论读后感-之红黑树的性质
- 《算法导论》第13章 红黑树 个人笔记
- 算法导论代码 第13章 红黑树
- 算法导论 第13章 红黑树
- 算法导论第13章-红黑树
- 算法导论-第13章-红黑树
- 算法导论第13章 红黑树
- 算法导论 第13章 红黑树
- 算法导论 第13章 红黑树
- 《算法导论》第13章 红黑树
- 算法导论学习笔记-第3章 函数的增长
- 《算法导论》笔记 第10章 10.4 有根树的表示
- 《算法导论》笔记 第22章 22.1 图的表示
- System.getProperty("line.separator")
- 【机器学习算法-python实现】KNN-k近邻算法的实现(附源码)
- 编程之美--求阶乘数结尾的0的个数 求二进制最有一个1的位置
- 【Lucene3.6.2入门系列】第14节_SolrJ操作索引和搜索文档以及整合中文分词
- phpmyadmin 出现Cannot start session without errors 错误 总结的几种原因和解决办法
- 《算法导论》笔记 第13章 13.1 红黑树的性质
- poj A Funny Game
- 【Lucene3.6.2入门系列】第15节_SolrJ高亮
- No_23Non-abundant sums
- ios判断系统是24小时制还是12小时制
- 数字反转
- linux2.6.36之后对工作队列的改进
- hdu1533 KM算法
- 回调函数多次调用就出错