数据结构(十一):红黑树

33 阅读2分钟

由于红黑树的实现过于复杂,这里只介绍一些红黑树的特性及与AVL树的对比

红黑树概念

红黑树是一种自平衡二叉查找树,被称为“对称二叉B树”,它拥有很多特性(可以参照下图):

image.png

  • 符合所有二叉搜索树的基本特性
  • 节点是红色或黑色
  • 根节点是黑色
  • 每个叶子节点都是黑色的空节点(Nil节点,该节点代码中不必实现,只是一个标识)
  • 每个红色节点的两个子节点都是黑色,红色节点的颜色不会影响树的平衡,同时保证了红色节点的出现不会导致连续的红色节点
  • 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点

所有这些特性都是为了保证从根到叶子的最长可能路径,不会超过最短可能路径的两倍,这样可以保证这个树基本是平衡的,虽然没有做到绝对的平衡,但是可以保证在最坏的情况下依然是高效的。

红黑树与AVL性能对比

  • 插入效率:由于红黑树较为宽松的限制,所以插入时大多数情况下不需要调整,而AVL树则时刻需要保证树的子节点高度差不超过1,所以插入时经常需要进行旋转操作,所以对比来看红黑树的效率更高。
  • 删除效率其实和插入类似,由于AVL树需要频繁的进行旋转操作,所以红黑树效率更高
  • 搜索效率:由于红黑树宽松的平衡限制,导致大多数情况下整棵树的树高都是比AVL树要高的(相同节点数量),所以搜索效率AVL树更高。

以上:红黑树相当于牺牲了部分搜索的性能来提升删除和插入的效率,所以它的综合效率更高,如果遇到需要大量查找操作的场景,AVL树会更加有优势。