红黑树与二叉平衡树比较
红黑树与二叉平衡树(AVL树)一样,也是自平衡二叉排序树。作用类似,但是比二叉平衡树更具有优势,会减少自平衡次数
,实际应用中,也是使用红黑树,而不是二叉平衡树。
红黑树相对于二叉平衡树来说,牺牲了部分平衡性以换取插入/删除操作时少量的旋转操作,整体来说性能要优于二叉平衡树
红黑树定义
红黑树特性:
- 每个节点要么红要么黑
- 根节点是黑色
- 每个叶子节点都是黑色(叶子是NULL节点表示 或 NIL节点表示)。
- 如果一个节点是红色的,那么它的子节点必须是黑色的子节点。(即不存在两个连续的红色节点)
- 从任一节点到其每个叶子结点(NULL节点或 NIL节点)的所有简单路径都包含相同数目的黑色节点。
理解红黑树特性
【图一】理解1、2、3特性
- 节点只有红黑两种颜色,如图所有节点,只有红黑
- 根节点只能是黑色,如图80
- 叶子节点都是黑色,如图NIL
【图二】理解4特性 - 如果一个节点是红色的,那么它的子节点必须是黑色的子节点,如图40,子节点20/60都是黑色
【图三】理解4特性
- 不可能存在两个连续的红色,但是可以存在连续的黑色,如图80/40/20
【图四】理解5特性
- 从任一节点到其每个叶子结点(NULL节点或 NIL节点)的所有简单路径都包含相同数目的黑色节点。,如图节点80到任意NIL节点,路径都是3
【图五】理解5特性
- 从任一节点到其每个叶子结点(NULL节点或 NIL节点)的所有简单路径都包含相同数目的黑色节点。如图节点100到任意NIL节点,路径都是2
【图六】理解5特性
- 从任一节点到其每个叶子结点(NULL节点或 NIL节点)的所有简单路径都包含相同数目的黑色节点。性质5保证了以黑色节点为子树也是一颗红黑树,如图20为根节点子树
通过上述6个图,我们基本上掌握的红黑树定义