先点击“载入示例”,再试着插入或删除一个关键字。
红结点
黑结点
空叶子 NIL 默认视为黑色
目标:不是背颜色规则,而是看懂“为什么要变色、为什么要旋转、为什么删除最麻烦”。
红黑树定义:红黑树是一种二叉排序树,每个结点带有红/黑颜色,并通过颜色约束保证树的高度不会退化成链表。
插入核心:新插入结点先染红,因为染红通常不破坏黑高;若父结点也是红色,才违反“不能红红相连”,然后根据叔叔结点颜色处理。
删除核心:真正麻烦的是“删除黑结点”。删除红结点不影响黑高;删除黑结点会导致某条路径少一个黑色,需要通过兄弟结点、侄子结点的颜色进行旋转和变色补偿。
考研优先级提醒:红黑树常作为平衡二叉排序树思想扩展。对 408 来说,AVL 的旋转、B/B+树、散列表通常更高频。红黑树要掌握定义性质、插入调整思想、删除为什么复杂,不要把大量时间砸进完整代码背诵。