红黑规则
- 节点不是黑色,就是红色(非黑即红)
- 根节点为黑色
- 叶节点为黑色(叶节点是指末梢的空节点 Nil或Null)
- 一个节点为红色,则其两个子节点必须是黑色的(根到叶子的所有路径,不可能存在两个连续的红色节点)
- 每个节点到叶子节点的所有路径,都包含相同数目的黑色节点(相同的黑色高度)
:::info
旋转操作
:::
:::info 插入时的变色旋转 :::
总结一下:
以上的情况都是父亲结点在祖先结点的左边,在祖先结点的右边也是相同的处理方法
叔叔结点存在且为红,把父亲结点和叔叔结点变黑,祖先变红继续向上处理直到祖先是根节点
叔叔存在为黑,祖孙三代在一条直线上进行单旋,不在则进行双旋