- 先来说说AVL树:
左右子树高度的绝对值之差不能超过1,也说是说,只能是1,-1或者0。
- 再来说说红黑树:
红黑树最长子树高度不能超过最短子树的两倍,所以他是弱平衡二叉树,相对于AVL树来说,它的旋转次数较少,因此,对于搜索、插入、删除的操作较多的情况下,优先选择红黑树。
-
红黑树的性质:
-
每个节点非黑即红。
-
根节点是黑色的。
-
NULL节点必须是黑色。
-
红色节点的父亲节点是黑色,儿子节点也必须是黑色,因为不能有两个连续的红色节点。
-
对于任意节点而言,到叶节点的每条路径都要包含相同数量的黑节点。
- 补充说明:
AVL树高度平衡,插入删除为引起频繁的调整,导致效率下降。但是红黑树插入最多两次,删除最多三次。
红黑树在查找、插入、删除的性能都是O(logN),性能稳定。所以在STL里很多底层结构都是红黑树。