AVL树
AVL树本质上是一颗二叉查找树。
AVL树的特点:
AVL树是一棵空树或它的左右两个子树的高度差的绝对值不超过1,
AVL树某个节点的左右两个子树都是一棵平衡二叉树;
在AVL树中任何节点的两个子树的高度最大差别为一。
AVL树也被称为平衡二叉树。
红黑树
红黑树(Red Black Tree) 是一种自平衡二叉查找树。
红黑树的性质:
1. 节点是红色或黑色。
2. 根节点是黑色。
3. 叶节点(NIL)是黑色的。(NIL节点无数据,是空节点)
4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
AVL树与红黑树的优缺点
1、红黑树不追求"完全平衡",它只要求部分达到平衡,但是提出了为节点增加颜色,红黑是用非严格的平衡来换取增删节点时候旋转次数的降低,而AVL是严格平衡树,因此在增加或者删除节点的时候,根据不同情况,旋转的次数比红黑树要多。
2、红黑树的删除效率更高,就插入节点导致树失衡的情况,AVL和RB-Tree都是最多两次树旋转来实现复衡rebalance,旋转的量级是O(1)删除节点导致失衡,AVL需要维护从被删除节点到根节点root这条路径上所有节点的平衡,旋转的量级为O(logN),而RB-Tree最多只需要旋转3次实现复衡,只需O(1),所以说RB-Tree删除节点的rebalance的效率更高,开销更小!
3、AVL树的搜索效率更高。
4、AVL更平衡,结构上更加直观,时间效能针对读取而言更高;维护稍慢,空间开销较大。
5、红黑树,读取略逊于AVL,维护强于AVL,空间开销与AVL类似,内容极多时略优于AVL,维护优于AVL。
参考链接:
https://www.cnblogs.com/woniu4/p/8086707.html