红黑树
1、概念
红黑树是一种自平衡的二叉查找树,它在二叉查找树的基础上又具备如下特征:
- 节点是红色或黑色
- 根节点是黑色
- 每个叶子节点都是黑色的空节点(NIL节点)
- 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
- 从任一节点到其每个叶子节点的所有路径都包含相同数目的黑色节点
2、调整方法
- 变色 : 为了重新符合红黑树的规则,尝试把红色节点变为黑色,或者把黑色节点变为红色。
- 旋转:
- 左旋转:逆时针旋转红黑树的两个节点,使得父节点被自己的右孩子取代,而自己成为自己的左孩子。说起来很怪异,大家看下图:
- 右旋转:顺时针旋转红黑树的两个节点,使得父节点被自己的左孩子取代,而自己成为自己的右孩子。大家看下图:
插入或者删除就是不停的变色或者旋转保证树满足红黑树的特性的过程。
3、参考
参考:http://www.bxoon.com/archives/红黑树的旋转与变色