红黑树

200 阅读1分钟

红黑树的性质

  • 每个节点不是红色就是黑色
  • 不可能有连在一起的红色节点
  • 根节点都是黑色
  • 每个红色节点的两个子节点都是黑色
  • 叶子节点都是黑色

旋转和颜色变换规则

  • 变换颜色的情况:当前节点的父亲是红色,且它的祖父节点的另一个子节点也是红色(叔叔节点)
  1. 把父节点设为黑色
  2. 把叔叔也设为黑色
  3. 把祖父也就是父亲的父亲设为红色
  4. 把指针定义到祖父节点设为当前要操作的
  • 左旋:当前父节点是红色,叔叔是黑色的时候,且当前的节点是右子树。左旋以父节点作为左旋。
  • 右旋:当前父节点是红色,叔叔是黑色的时候,且当前的节点是左子树。右旋
  1. 把父节点变为黑色
  2. 把祖父节点变为红色(爷爷)
  3. 以祖父节点旋转(爷爷)
  • 左旋:当前父节点是红色,叔叔是黑色的时候,且当前的节点是右子树。左旋以父节点作为左旋