红黑树可视化

当前序列
树为空。插入一个整数开始。

记口诀

左根右,根叶黑,不红红,黑路同

左根右
左子 < 根 < 右子(二叉搜索树顺序)。
根叶黑
根是黑色;NIL 空叶也视为黑色。
不红红
红色节点的两个孩子都必须是黑色,不能红连红。
黑路同
从任一节点到其后代空叶的每条路径,黑色节点数目相同。

插入手算

黑叔旋转染色,红叔染色上移

黑叔旋转染色

叔叔为黑(含 NIL):按 LL / LR / RL / RR 旋转,再把父染黑、祖父染红。

红叔染色上移

叔叔为红:父和叔染黑、祖父染红,把红连红冲突上移到祖父,再继续检查。

红黑树五条性质

  1. 01每个节点不是红就是黑。
  2. 02根节点是黑色。
  3. 03所有 NIL 空叶视为黑色。
  4. 04红色节点的两个子节点都是黑色(不能红连红)。
  5. 05从任一节点到其后代空叶的每条路径,黑色节点数目相同。
交互参考 David Galles 的红黑树可视化