红黑树基本概念

Posted 牧空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了红黑树基本概念相关的知识,希望对你有一定的参考价值。

红黑树是一种自平衡的二叉查找树

二叉查找树的特点

  1. 左子树上所有结点的值均小于或等于它的根结点的值。

  2. 右子树上所有结点的值均大于或等于它的根结点的值。

  3. 左、右子树也分别为二叉排序树。

红黑树的特点

  1. 节点是红色或黑色。

  2. 根节点是黑色。

  3. 每个叶子节点都会挂上两个NULL节点,且所有NULL节点都是黑的。

  4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)

  5. 从任一节点到其每个NULL节点的所有路径都包含相同数目的黑色节点。

img

破坏的情况

  1. 往红色节点下插入一个数据,为满足5,可能破坏4
    img
  2. 等等

调整方法

变色

为了满足规则4

img

但是破坏了5,为了维持,还要修改其他节点

img

img

左旋转

逆时针旋转红黑树的两个节点,使得父节点被自己的右孩子取代,自己成为自己的左孩子.

img

右旋转

顺时针旋转红黑树的两个节点,使得父节点被自己的左孩子取代,而自己成为自己的右孩子

img

无论怎么旋转到要保证满足二叉查找树的特点

这一部分的中序遍历结果不变

以右旋转为例,中序遍历的结果为: b Y c X a,是一个升序序列

现在以Y作为根节点,要满足要求就如上图所示

实际应用

JDK中的集合类TreeMap和TreeSet底层用的是红黑树.在Java8中,HashMap用的也是红黑树

以上是关于红黑树基本概念的主要内容,如果未能解决你的问题,请参考以下文章

树——红黑树基本概念

树——红黑树基本概念

红黑树基本概念

(王道408考研数据结构)第五章树-第四节4:红黑树基本概念及操作

数据结构之红黑树

漫画红黑树杀人事件始末