红黑树是在二叉查找树(BST)的基础上进行的
什么是二叉查找树?
- 左子树上所有结点的值均小于或等于它的根结点的值。
- 右子树上所有结点的值均大于或等于它的根结点的值。
- 左、右子树也分别为二叉排序树。
一颗典型的二叉查找树
- 在二叉查找树中,查找一个值的过程,利用了二分查找的思想,查找所需的最大次数等同于二叉查找树的高度。
红黑树(Red Black Tree)是一种自平衡的二叉查找树。除了符合二叉查找树的基本特性外,它还具有下列附加特性:
- 结点是红色或黑色。
- 根结点是黑色。
- 每个叶子结点都是黑色的空结点(NIL结点)。
- 每个红色结点的两个子结点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色结点)
- 从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点。
一颗典型的红黑树
当新插入一个值,使条件不满足上述五个特性时,为了保持始终是一棵红黑树,就会发生三种变化,使其重新满足红黑树的所有特性
-
变色
-
左旋转
-
右旋转