红黑树的特性与优点
红黑树是一种自平衡的二叉搜索树,通过额外的颜色标记和平衡性约束,确保树的高度始终保持在 O(log n)。其核心特性如下:
- 每个节点要么是红色,要么是黑色。
- 根节点和叶子节点(NIL节点)是黑色。
- 红色节点的子节点必须是黑色(不能有两个连续的红色节点)。
- 从任一节点到其每个叶子的路径都包含相同数目的黑色节点(黑高平衡)。
这些特性使得红黑树在插入、删除时通过颜色调整和旋转操作维持平衡,避免了BST的退化问题。
顺序插入12345
2(B)/ \1(B) 4(B)/ \3(R)5(R)
步骤解释:
-
插入1:根节点,设为黑色。
1(B)
-
插入2:作为1的右子节点,设为红色。无冲突。
1(B)\2(R)
-
插入3:作为2的右子节点,设为红色。此时父节点2(红)与子节点3(红)冲突。
- 调整:左旋祖父节点1,将2提升为根并设为黑色,1和3设为红色。
2(B)/ \1(R) 3(R)
-
插入4:作为3的右子节点,设为红色。父节点3(红)与子节点4(红)冲突。
- 调整:颜色翻转(父节点3和叔叔节点1变黑,祖父节点2变红),最后根保持黑色。
2(B)/ \1(B) 3(B)\4(R)
-
插入5:作为4的右子节点,设为红色。父节点4(红)与子节点5(红)冲突。
- 调整:左旋祖父节点3,将4设为黑色,3设为红色。
2(B)/ \1(B) 4(B)/ \3(R)5(R)
验证规则:
- 根为黑色:满足。
- 红色节点无红色子节点:3®和5®的子节点均为NIL(黑)。
- 所有路径黑色节点数相同:每条路径均为2个黑色节点(例如:
2→1→NIL
或2→4→3→NIL
)。
该结构严格遵循红黑树的五条性质,是一棵有效的红黑树。