第13章 红黑树 — 章节汇总

章节概览

本章是 Part III 数据结构的高潮章节,系统介绍了红黑树(Red-Black Tree)——一种通过着色约束保证 树高的自平衡二叉搜索树。红黑树是第12章BST的自然延伸:BST解决了”如何操作”的问题,红黑树解决了”如何保证高效”的问题。通过5条着色性质,红黑树使得搜索、插入、删除等所有动态集合操作在最坏情况下均为 ,同时保持相对简单的实现(插入最多2次旋转,删除最多3次旋转)。


13.1 红黑树的性质

小节核心主题关键结论
13.1 红黑树的性质5条性质、黑高度、高度上界

核心思路:红黑树是一种二叉搜索树,每个节点额外存储颜色(红/黑),通过5条性质约束树的结构,保证树高

核心定理

  • 引理13.1:以 为根的子树至少包含 个内部节点(数学归纳法)
  • 推论13.2: 个内部节点的红黑树高度

13.2 旋转

小节核心主题关键结论
13.2 旋转左旋、右旋 时间,保持BST性质

核心思路:旋转是红黑树插入和删除修复操作的唯一结构性修改手段。左旋和右旋在 时间内改变树的局部结构,同时保持BST性质(中序遍历不变)。旋转本身不保持红黑性质,但为变色操作创造条件。


13.3 插入

小节核心主题关键结论
13.3 插入RB-INSERT、RB-INSERT-FIXUP,最多2次旋转

核心思路:新节点着红色(保证黑高度不变),然后通过 RB-INSERT-FIXUP 向上回溯修复可能违反的性质2(根为黑)和性质4(红节点的孩子为黑)。

三种情况(+三种镜像):

  • Case 1:叔叔为红 → 变色上移
  • Case 2:叔叔为黑+当前为右孩子 → 左旋转Case 3
  • Case 3:叔叔为黑+当前为左孩子 → 变色+右旋完成

13.4 删除

小节核心主题关键结论
13.4 删除RB-DELETE、RB-DELETE-FIXUP、额外黑色,最多3次旋转

核心思路:当被移动的节点 黑色时,引发黑高度不一致。引入"额外黑色"概念,将问题节点 视为带有”双重黑色”,通过 RB-DELETE-FIXUP 将额外黑色沿树上移。

四种情况(+四种镜像):

  • Case 1:兄弟为红 → 变色+左旋转Case 2/3/4
  • Case 2:兄弟为黑+两侄子为黑 → 变色上移
  • Case 3:兄弟为黑+近侄子为红+远侄子为黑 → 旋转转Case 4
  • Case 4:兄弟为黑+远侄子为红 → 变色+左旋完成

本章核心知识点

红黑树操作复杂度汇总

操作时间复杂度旋转次数说明
搜索0纯BST搜索
最小值/最大值0沿边界下降
前驱/后继0两种情况
插入着红色+修复
删除TRANSPLANT+修复
旋转1左旋/右旋

红黑树 vs AVL树 vs B树 对比

特性红黑树AVL树B树
平衡策略着色+旋转高度差≤1节点度数约束
树高上界
插入旋转(≤2次)
删除旋转(≤3次)
查找性能较好最优取决于扇出
适用场景通用内存数据结构查找密集型磁盘存储

红黑树5条性质

编号性质作用
1每个节点是红色或黑色基础定义
2根节点是黑色锚定黑高度
3每个叶节点(NIL)是黑色统一边界
4红色节点的孩子都是黑色防止连续红色
5所有路径黑节点数相同保证平衡

与前序章节的知识关联

前序章节关联方式
第12章 二叉搜索树红黑树是BST的特例,继承所有BST操作;RB-INSERT基于TREE-INSERT,RB-DELETE基于TRANSPLANT和TREE-DELETE
第10章 基本数据结构10.3节有根树的表示(p/left/right指针)是红黑树节点结构的基础
第11章 散列表散列 期望 vs 红黑树 最坏;红黑树支持有序操作
第6章 堆排序二叉堆 vs 红黑树:同为二叉树但性质不同(堆:父≥子;红黑树:左<根<右+着色约束)

学习路线

第13章学习路径:
  13.1 红黑树的性质(5条性质→黑高度→引理13.1→推论13.2)
    → 13.2 旋转(左旋→右旋→BST性质保持→O(1)分析)
      → 13.3 插入(着红色→RB-INSERT-FIXUP→3种情况→最多2次旋转)
        → 13.4 删除(额外黑色→RB-DELETE-FIXUP→4种情况→最多3次旋转)

学习建议

本章是数据结构部分最难的一章。13.1 是基础,重点理解5条性质的协同作用和引理13.1的归纳法证明。13.2 旋转相对简单,但需要深刻理解”旋转保持BST性质但不保持红黑性质”这一关键区分。13.3 插入是考试重点,三种情况(Case 1/2/3)的转换逻辑需要反复推敲。13.4 删除是全书最复杂的算法,建议结合可视化工具(如Red-Black Tree Visualizer)逐步跟踪每种情况的状态变化。学完本章后,回顾第12章BST的退化问题,理解红黑树如何通过着色约束从根本上解决了这一问题。

红黑树