这是你理解红黑树为什么能做到“自平衡”的关键部分,也是后续手撕实现的理论基础。
一、红黑树的核心性质(复习)
红黑树必须满足以下五条性质:
- 每个节点要么是红色要么是黑色;
- 根节点是黑色;
- 所有叶子节点(NIL)都是黑色;
- 如果一个节点是红色,那么它的子节点必须是黑色(即不能连续红色);
- 从任一节点到其所有叶子节点的所有路径都包含相同数目的黑色节点(黑高)。
二、红黑树的高度推导
我们现在推导:
红黑树最坏情况下的高度是 O(log n),也就是说,查找时间复杂度是 O(log n)。
假设:
h是红黑树的总高度(红黑节点交错)bh是从根节点到任意叶节点的黑高(black-height)
步骤一:黑高的下界推导
由于不能连续两个红色节点,最短路径是黑节点,最长路径是交替红黑,所以:
最坏的情况下,路径中红节点和黑节点数量交错,那么有:
h ≤ 2 * bh
步骤二:节点数与黑高关系
我们考虑一个最少节点数的红黑树:
- 设黑高为
bh,则最少节点的红黑树是全黑路径,没有红色节点(每次只加黑节点) - 节点总数
n至少是:
n ≥ 2^bh - 1
整理后得到:
bh ≤ log2(n + 1)
步骤三:结合两个不等式
由:
h ≤ 2 * bh
bh ≤ log2(n + 1)
推导得:
h ≤ 2 * log2(n + 1)
✅ 结论:红黑树的高度是 O(log n)
所以红黑树的插入、删除、查找时间复杂度是 O(log n)。
三、与 AVL 树比较的数学结论
|
特性 |
AVL 树 |
红黑树 |
|
高度上界 |
~1.44 log₂n |
≤ 2 log₂(n+1) |
|
平衡性 |
严格 |
稍松 |
|
插入/删除代价 |
高(旋转多) |
低(旋转少) |
四、红黑树的旋转次数分析
插入一次操作时,最多旋转两次即可保持红黑性质。
AVL 可能会多次旋转,因此在需要频繁插入/删除的系统环境下,红黑树的效率更优。
五、数学证明小结(记忆口诀)
红黑交错是特点,黑高一致不容乱,
最坏高度双倍黑,仍是对数来压冠。
✅ 思考问题
- 红黑树为什么只需要两次旋转就能恢复平衡?
- 红黑树插入时,会有哪些情况违反它的五条性质?
668

被折叠的 条评论
为什么被折叠?



