红黑树与普通的平衡二叉树除了颜色到底有啥区别为啥要引入红黑树,它比普通的平衡二叉树究竟好在哪( 三 )
红黑树的黑高则为其根结点的黑高。根据红黑树的性质 3、4,一颗红黑树的黑高 bh \u0026gt;= h/2
Number of nodes from a node to its farthest descendant leaf is no more than twice as the number of nodes to the nearest descendant leaf. 从一个结点到其最远的后代叶结点的顶点数目不会超过从该结点到其最近的叶结点的结点数目的两倍。这句话的意思就是公式
? ,其中黑高 bh 就表示从根结点 6 到离它最近的叶结点 2 包含的结点数 2 ,而 h 则表示从根结点 6 到其最远的叶结点 9 所包含的结点数目 4 ,显然这一公式是合理的。

引理:一棵有n个内部结点的红黑树的高度 h \u0026lt;= 2lg(n+1)。
关于算法导论中的证明,就不再这里显摆了,我们用一种更直观的方式来看一下这个问题。
首先我们将下图中的所有红色结点合并到其黑色父结点
合并动画演示:
合并后的结果:
也就是刚才的合并产生了一颗 2-3-4 树,这棵树中的每一个结点有2、3 或者 4 个孩子结点。而一颗 2-3-4 树的叶结点有着相同的深度
.
由于从根结点到任何一个叶结点的路径上至多只有高度
的一半的红色结点数目,所以可以得到 ? 的结论。
对于一颗有
个叶子结点的2-3-4 树而言,可以依次得到如下结论:
?
?
?
所以对于一颗有 ?
个结点的红黑树而言,不论查找、删除、查找和最大值、最小值等等的时间复杂度都是 ?
.
红黑树有什么应用呢?
大多数自平衡BST(self-balancing BST) 库函数都是用红黑树实现的,比如C++中的map 和 set (或者 Java 中的 TreeSet 和 TreeMap)。红黑树也用于实现 Linux 操作系统的 CPU 调度。完全公平调度(Completely Fair Scheduler)使用的就是红黑树。下图来自于为英文的维基百科(该图为Linux的内核图)。
推荐阅读
- “他是我第一个会说普通话的老师”:一对师生折射青海山村蝶变
- 江苏高考■江苏省发布《2021年普通高校招生考试安排和录取工作实施方案》
- 长春评选“网络奋斗者”:互联网成更多普通人创业工具
- 普通车|德系商务风对阵美式运动范 迈腾 VS 迈锐宝XL
- 普通车|途观L之后,大众又一款“销量王”,配2.0T动力,10月卖出18885台
- 普通车|选商务还是要运动? 迈腾 VS 君威
- 普通车|别克也有“明星”SUV,2.0T+9AT,配全景天窗,还很厚道
- 当下电脑城/电子城/数码城的业务日益萧条,作为普通的创业者该怎样转变思路从而突围
- 不是刺儿头,是普通人守护普通权利
- 普通车|更显轻奢质感,全新速派上市,这价位还买啥丰田本田
