红黑树基本概念
Posted 牧空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了红黑树基本概念相关的知识,希望对你有一定的参考价值。
红黑树是一种自平衡的二叉查找树
二叉查找树的特点
-
左子树上所有结点的值均小于或等于它的根结点的值。
-
右子树上所有结点的值均大于或等于它的根结点的值。
-
左、右子树也分别为二叉排序树。
红黑树的特点
-
节点是红色或黑色。
-
根节点是黑色。
-
每个叶子节点都会挂上两个NULL节点,且所有NULL节点都是黑的。
-
每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
-
从任一节点到其每个NULL节点的所有路径都包含相同数目的黑色节点。
破坏的情况
- 往红色节点下插入一个数据,为满足5,可能破坏4
- 等等
调整方法
变色
为了满足规则4
但是破坏了5,为了维持,还要修改其他节点
左旋转
逆时针旋转红黑树的两个节点,使得父节点被自己的右孩子取代,自己成为自己的左孩子.
右旋转
顺时针旋转红黑树的两个节点,使得父节点被自己的左孩子取代,而自己成为自己的右孩子
无论怎么旋转到要保证满足二叉查找树的特点
这一部分的中序遍历结果不变
以右旋转为例,中序遍历的结果为: b Y c X a,是一个升序序列
现在以Y作为根节点,要满足要求就如上图所示
实际应用
JDK中的集合类TreeMap和TreeSet底层用的是红黑树.在Java8中,HashMap用的也是红黑树
以上是关于红黑树基本概念的主要内容,如果未能解决你的问题,请参考以下文章