红黑树

红黑树的底层数据结构就是一棵二叉查找树(自平衡的二叉查找树)

二叉搜索树也叫二叉查找树,二叉排序树。

 

  1. 每个结点不是红色,就是黑色
  2. 不可能有连在一起的红色结点,两个黑色结点连在一起是可以的。
  3. 根结点是黑色。
  4. 每个红色结点的两个子结点都是黑色,叶子结点都是黑色,

 

红黑树的变换规则:

  1. 改变颜色,红变黑,黑边红
  2. 左旋
  3. 右旋

 

旋转和颜色变换规则:

所有的插入的点默认都是红色。

 

  1. 变颜色的情况(如图1中插入结点6后的,6,7结点):

当前结点的父亲是红色,且它的祖父结点的另一个子节点(叔叔结点)也是红色

变颜色的规则:

  1. 把父节点设为黑色
  2. 把叔叔结点也变为黑色
  3. 把祖父也就是父亲的父亲(爷爷)结点设为红色
  4. 把指针定义到祖父结点设为当前要操作的(爷爷)分析的点变换规则
  1. 左旋,(如图2中的12,5结点,做左旋)

当前父节点是红色,叔叔是黑色的时候,且当前的结点是右子树,左旋,

以父节点作为根结点左旋,如图2中的12,5结点,做左旋

  1. 右旋,(如图3的5,12结点)

当前父节点是红色,叔叔是黑色的时候,且当前的结点是左子树,右旋。

右旋规则:

  1. 把父节点变为黑色
  2. 把祖父结点变为红色(爷爷)
  3. 以祖父结点(爷爷)做选择。如图3中,是以19结点右旋。

    数据结构系列,红黑树

    数据结构系列,红黑树

    待续。。。

相关文章: