rhanqtlnuse

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数据结构:红黑树

红黑树

概念

定义:节点的颜色或红或黑的二叉搜索树,所有的外部节点(External Node)都是黑色的,并且满足如下约束:

  • 颜色约束:红色节点的子节点不能为红色
  • 黑高度(Black Height)约束:任意节点 u 的所有外路径的黑长度(Black Length)都相同
  • 根节点是黑色的

Almost-red-black 树:根节点是红色的,满足颜色约束和黑高度约束

约定:

  • \(RB_h\):黑高度为 h 的红黑树
  • \(ARB_h\):黑高度为 h 的 Almost-red-black tree

递归定义:

  • 外部节点是 \(RB_0\) 树,是黑色的
  • 一颗二叉树是 \(RB_h\) 树如果:
    • 根节点是黑色的
    • 子树为 \(RB_{h-1}\) 树或 \(ARB_h\)
  • 一棵二叉树是 \(ARB_h\) 树如果:
    • 根节点是红色的
    • 子树均为 \(RB_{h-1}\)

\(ARB_1\)

\(RB_1\)

良定义(Well-Defined)的黑高度:从根节点出发,所有外路径的黑长度都相同

可以将某个节点的所有红色子节点“展开”:

操作

插入

概略过程:

  1. 将新节点标记为红色(此时黑高度约束依然成立)
  2. 在保证黑高度约束成立的情况下,调整颜色结构,使得颜色约束成立

在某处调整过后可能导致上层的约束不成立,需要递归向上调整

3-node Critical Cluster 满足如下条件:

  • 四棵子树都是黑色的:在情况 A、B 中,如果子树 LL 为红色;或者在情况 C、D 中,如果子树 RR 为红色,那么就变成了 4-node critical cluster
  • 满足 LL < L < LR < M < RL < R < RR:红黑树是一棵二叉搜索树

更多资料

[1] 红黑树操作可视化:Visualization - Red/Black Tree

posted on 2018-10-13 12:23  rhanqtlnuse  阅读(323)  评论(0)    收藏  举报