排序树对比

问题:有了二叉查找树、平衡树(AVL),为啥还需要红黑树?

答:极端情况下,二叉树会退化成链表,时间复杂度从O(logn)退化为O(n)。所以有了平衡二叉树。

平衡二叉树对平衡的要求过于严格——每个节点的左右子树的高度差最多为1。这样导致每次进行插入或删除时都会破坏平衡规则,需要进行左旋和右旋来调整。所以有了红黑树。红黑树的特点如下:

红黑树具有如下特点:

1、具有二叉查找树的特点。

2、根节点是黑色的;

3、每个叶子节点都是黑色的空节点(NIL),也就是说,叶子节点不存数据。

4、任何相邻的节点都不能同时为红色,也就是说,红色节点是被黑色节点隔开的。

5、每个节点,从该节点到达其可达的叶子节点是所有路径,都包含相同数目的黑色节点。

正是由于红黑树的这种特点,使得它能够在最坏情况下,也能在 O(logn) 的时间复杂度查找到某个节点。

不过与平衡树不同的是,红黑树在插入、删除等操作时不会像平衡树那样频繁着破坏红黑树的规则,所以不需要频繁的调整,这也是我们为什么大多数情况下使用红黑树的原因。

但是,单单在查找效率方面,平衡树比红黑树快。所以,红黑树是一种不大严格的平衡树,可以说是一个折中发方案。

总之:平衡树是为了解决二叉查找树退化为链表的情况,而红黑树是为了解决平衡树在插入、删除等操作需要频繁调整的情况。

参考:

一步步分析为什么B+树适合作为索引的结构

Mysql索引分析

------ 本文结束感谢您的阅读 ------
请我一杯咖啡吧!
itingyu 微信打赏 微信打赏