对应章节:查找 → 平衡二叉树(AVL)与红黑树
这部分如果考研出题,通常不会让你手写完整工程实现,而更可能考:
性质判断
高度与复杂度
插入/删除后的旋转次数
红黑树与 AVL 的对比
给一棵树判断是否合法
一、先看一道典型判断题
题目核心选项:
A. 红黑树和AVL树都属于自平衡二叉树
B. 两者查找、插入、删除的时间复杂度相同
C. 红黑树插入和删除过程至多有2次旋转
D. 红黑树任一结点的左右子树高度不会相差得过于悬殊
错误项:
C
原因:
红黑树插入:
最多2次旋转
红黑树删除:
最多可能需要3次旋转
所以不能把"插入"和"删除"都说成最多 2 次旋转。
二、红黑树到底是什么
红黑树本质上还是:
二叉搜索树 BST
只是给每个结点增加一个颜色:
红色 / 黑色
并通过颜色规则限制树不要长得太歪。
所以它是一种:
近似平衡的二叉搜索树
注意:
AVL:追求严格平衡
红黑树:追求相对平衡
三、红黑树必须记住的5条性质
常见教材一般记下面几条:
1. 每个结点非红即黑
2. 根结点是黑色
3. 所有空叶结点 NIL 都看作黑色
4. 红色结点不能连续出现
即红结点的孩子必须是黑色
5. 从任一结点到其所有后代 NIL 结点的路径上,
黑色结点数量相同
第 5 条又叫:
黑高相同
它是红黑树维持"不会太歪"的核心。
四、为什么红黑树高度不会太高
红黑树中:
不能有两个连续红结点
所以一条路径即使尽量长,也只能:
黑 - 红 - 黑 - 红 - 黑 ...
而另一条最短路径可以近似:
黑 - 黑 - 黑 ...
因此:
最长路径长度
<=
最短路径长度的约2倍
所以红黑树虽然不像 AVL 那么严格平衡,但高度仍然是:
O(log n)
因此:
查找 O(log n)
插入 O(log n)
删除 O(log n)
五、红黑树和 AVL 的核心区别
AVL
要求非常严格:
任一结点
|左子树高度 - 右子树高度| <= 1
所以:
树更矮
查找通常更快
但代价是:
插入、删除后更容易发生结构调整
红黑树
平衡要求更宽松。
它不要求:
左右子树高度差 <= 1
而是通过:
颜色规则 + 黑高一致
保证整棵树不会严重失衡。
因此:
查找性能略逊于AVL
但插入删除调整一般更少
六、旋转次数:非常容易考
红黑树插入
插入修复中:
最多2次旋转
很多情况只需要:
变色
甚至不用旋转。
红黑树删除
删除修复比插入复杂。
最坏情况下:
最多可能3次旋转
所以看到:
"红黑树插入和删除都最多2次旋转"
直接判:
错
七、为什么 B 选项说"两者复杂度相同"可以对
AVL 和红黑树虽然平衡程度不同,但渐进复杂度都是:
查找:O(log n)
插入:O(log n)
删除:O(log n)
所以如果题目问:
时间复杂度是否相同
通常看的是:
渐进复杂度数量级
不是比较常数大小。
因此:
B 可以认为正确
八、408 如果考红黑树,最可能怎么考
下面是基于常见考法的预测,不是说一定这样出。
1. 性质判断题
最常见。
例如:
下列哪项符合红黑树性质?
常考陷阱:
根必须黑
红结点不能有红孩子
所有根到叶路径长度必须相同 ×
所有根到NIL路径黑结点数相同 √
最容易错的是:
红黑树不是所有路径"长度相同",而是"黑结点数量相同"。
2. AVL 和红黑树对比
可能问:
谁更严格平衡?
谁高度更低?
谁更适合频繁插入删除?
谁旋转调整更少?
秒杀:
AVL:更严格,更适合查找多
红黑树:更宽松,更适合更新多
3. 高度上界题
可能给 n 个结点,问红黑树高度数量级。
直接记:
h = O(log n)
更具体地:
红黑树高度最多约为
2log2(n+1)
做选择题通常看到:
O(log n)
就应该高度敏感。
4. 判断某棵树是不是合法红黑树
给一棵带颜色的树,让你检查:
根是否黑
红结点有没有红孩子
各路径黑高是否一致
做题顺序建议:
先看红红相连
再看黑高
因为红红相连最好发现。
5. 插入后的修复
考研更可能让你判断:
需要变色还是旋转
旋转次数最多多少
而不是让你从头实现完整代码。
高频结论:
插入最多2次旋转
6. 删除后的修复
如果考删除,最容易考的不是完整过程,而是:
删除比插入更复杂
最坏旋转次数可能达到3次
所以:
"删除最多2次旋转"
是一个很典型的错误项。
九、做题秒杀表
| 看到什么 | 立即反应 |
|---|---|
| AVL | 高度差绝对值 <= 1 |
| 红黑树 | 颜色规则维持近似平衡 |
| 红结点 | 不能有红孩子 |
| 黑高 | 任一结点到后代NIL路径黑结点数相同 |
| 红黑树高度 | O(log n) |
| AVL与红黑树查找复杂度 | 都是 O(log n) |
| 红黑树插入旋转 | 最多2次 |
| 红黑树删除旋转 | 最多可能3次 |
| 谁更严格平衡 | AVL |
| 谁通常更新代价更低 | 红黑树 |
十、一句话记忆
AVL:
管"高度差",管得很严
红黑树:
管"颜色和黑高",管得更松
两者:
查找、插入、删除都是 O(log n)
红黑树:
插入最多2旋
删除最多可能3旋
十一、考试最容易挖的坑
坑1
红黑树任意根到叶路径长度相同
错。
应该是:
黑结点数量相同
坑2
红黑树左右子树高度差必须 <= 1
错。
这是 AVL 的要求。
坑3
红黑树插入删除都最多2次旋转
错。
插入最多2次
删除最多可能3次
坑4
红黑树不是二叉搜索树
错。
红黑树本质仍然是:
二叉搜索树
只是在 BST 上增加颜色约束。