1、红黑树
红黑树是一种类似二叉平衡排序树,对树的平衡状态要求要松一点。避免了频繁左旋、右旋带来的时间和空间资源的消耗。
2、红黑树的几大特征
- 1、根结点的颜色是黑色,叶子结点的颜色是黑色
- 2、树中结点的颜色只能是红色/黑色
- 3、红色结点的颜色只能是黑色
- 4、插入结点时,默认是红色
- 5、根结点到叶子结点的路径上,具有相同数量的黑色结点
红黑树高度差最大为2h
3、变色操作
当插入新结点后,如果不满足红黑树的性质,则需要进行变色操作。
- 1、变色条件:当前结点是红色,且其父亲和叔叔结点都是红色时就需要进行变色。
- 2、变色过程:将父亲结点、叔叔结点变为黑色,爷爷结点变为红色,再依次向上验证。
4、红黑树之旋转
4.1 左旋
- 1、左旋的条件:当前插入的结点是位于右子树的红色结点,且其父亲为红色结点、叔叔为黑色结点时,需要进行左旋转操作。
- 2、左旋过程:将当前结点变为父亲结点所在的位置,父亲结点变为当前结点的左孩子,然后对树进行调整。
4.2 右旋转
- 1、右旋转的条件:当前插入的结点是位于左子树的红色结点,且其父亲是红色结点、叔叔结点是黑色结点时,需要进行右旋操作。
- 2、右旋过程:
-
1、在右旋转之前有个变色的操作,这里的变色和之前的变色有点不同之处,具体过程如下:将当前结点的父亲结点变为黑色、爷爷结点变为红色。2、按照爷爷结点作为根结点来进行右旋操作。具体就是将父亲结点作为根结点、爷爷结点作为右孩子,然后对树进行调整。