红黑树

平衡二叉树一般用于以查为主的场景 红黑树一般用于插入删除较多的场景

一般只考察定义和插入操作

定义

插入

  1. 新结点是根————结点染为黑色

  2. 新结点是非根————结点染为红色

  3. 若新插入结点后依然满足红黑树定义,插入结束

  4. 若新插入结点不满足红黑树定义,需要调整使其满足定义(看新结点的叔叔结点的颜色)

    • 黑叔:旋转+染色

      • LL: 右单旋转,父换爷+染色
      • RR: 左单旋转,父换爷+染色
      • LR: 左右双旋,儿换爷+染色
      • RL: 右左双旋,儿换爷+染色
    • 红叔:染色+变新

      • 叔父爷染色,爷变为新结点
不是
满足
不满足
黑树
红树
开始
二叉排序树插入操作
新插入结点是根
结点染为黑色
结点染为红色
依然满足红黑树定义
结束
重新调整
旋转
LL 右单旋转 父换爷
RR 左单旋转 父换爷
LR 左右双旋 儿换爷
RL 右左旋转 儿换爷
染色
叔父爷染色
爷变为新结点