红黑树对比AVL树
都是平衡二叉树。JDK热衷使用红黑树而非AVL树。
对比:
1、AVL树是严格平衡的,红黑树非严格平衡,
这点看查询效率AVL树 略好于 红黑树,但都是O(lon n)数量级
2、AVL树添加时最多2次旋转操作达到平衡,而删除时,可能删除节点以下的所有节点都需要旋转-> O(lon n)次
红黑树最多3次旋转可平衡。
这点看 红黑树效率更好,更平衡
综上所看
1、如果明确读多写少场景,使用AVL树较优
2、其他情况从性能和稳定性综合判定,优先使用红黑树
JDK中TreeMap HashMap也是选择了红黑树而非AVL树

浙公网安备 33010602011771号