1、调整平衡的实现机制不同:
红黑树根据节点颜色(同一双亲节点出发到哨兵节点,所有路径上的黑色节点数目一样),一些约定和旋转实现;
AVL根据树的平衡因子(所有节点的左右子树高度差的绝对值不超过1)和旋转决定
2、红黑树的插入效率更高!!!
红黑树是用非严格的平衡来换取增删节点时候旋转次数的降低,任何不平衡都会在三次旋转之内解决,红黑树并不追求“完全平衡”,它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能
而AVL是严格平衡树(高度平衡的二叉搜索树),因此在增加或者删除节点的时候,根据不同情况,旋转的次数比红黑树要多。所以红黑树的插入效率更高
3、红黑树统计性能比AVL树更高
红黑树能够以O(log2 n) 的时间复杂度进行搜索、插入、删除操作。
红黑树的算法时间复杂度和AVL相同,但统计性能比AVL树更高,典型的用途是实现关联数组。
AVL树查找、插入和删除在平均和最坏情况下都是O(log n)。
4、适用性:AVL查找效率高
如果你的应用中,搜索的次数远远大于插入和删除,那么选择AVL树,
如果搜索,插入删除次数几乎差不多,应选择红黑树。即,有时仅为了排序(建立-遍历-删除),不查找或查找次数很少,R-B树合算一些。
5、AVL树定义:
1>它的左子树和右子树都是AVL树
2>左子树和右子树的高度差不能超过1
红黑树定义:
1> 每个结点或者为黑色或者为红色。
2>根结点为黑色。
3>每个叶结点(实际上就是NULL指针)都是黑色的。
4>如果一个结点是红色的,那么它的两个子节点都是黑色的(也就是说,不能有两个相邻的红色结点)。
5>对于每个结点,从该结点到其所有子孙叶结点的路径中所包含的黑色结点数量必须相同。 即(同一双亲节点出发到哨兵节点,所有路径上的黑色节点数目一样)