红黑规则

  1. 节点不是黑色,就是红色(非黑即红)
  2. 根节点为黑色
  3. 叶节点为黑色(叶节点是指末梢的空节点 Nil或Null)
  4. 一个节点为红色,则其两个子节点必须是黑色的(根到叶子的所有路径,不可能存在两个连续的红色节点)
  5. 每个节点到叶子节点的所有路径,都包含相同数目的黑色节点(相同的黑色高度)

image.png :::info 旋转操作 ::: image.png
image.png

:::info 插入时的变色旋转 :::

总结一下:

以上的情况都是父亲结点在祖先结点的左边,在祖先结点的右边也是相同的处理方法

叔叔结点存在且为红,把父亲结点和叔叔结点变黑,祖先变红继续向上处理直到祖先是根节点

叔叔存在为黑,祖孙三代在一条直线上进行单旋,不在则进行双旋

叔叔不存在,祖孙三代在一条直线上进行单旋,不在则进行双旋