红黑树的定义:
红黑树是一种特化的平衡二叉树(AVL),在进行插入与删除时都是通过特定操作来保持二叉查找树的平衡,从而获得较高的查找性能。
红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于 1,所以红黑树不是严格意义上的平衡二叉树(AVL),但 对之进行平衡的代价较低, 其平均统计性能要强于平衡二叉树(AVL) 。
由于每一颗红黑树都是一颗二叉排序树,因此,在对红黑树进行查找时,可以采用运用于普通二叉排序树上的查找算法,在查找过程中不需要颜色信息。
特性:
1.保留了二叉树的强制要求特征((1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的结点。)
2.根节点是黑色。
3.所有叶子都是黑色。(叶子是NUIL节点)
4.节点是红色或黑色。
5.每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
6.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
因为红黑树是一种特化的二叉查找树,所以红黑树上的只读操行与普通二叉查找树相同。
树的旋转:
当我们在对红黑树进行插入和删除等操作时,对树做了修改,那么可能会违背红黑树的性质。
为了保持红黑树的性质,我们可以对相关节点做一系列的调整,通过对树进行旋转(例如左旋和右旋操作),即修改树中某些结点的颜色及指针结构,以达到对红黑树进行插入、删除结点等操作时,红黑树依然能保持它特有的性质(五点性质)。