Files
912-notes/thu_dsa/chp7/AVL.md

1.2 KiB
Raw Blame History

Conclusion on AVL

AVL

什么是平衡树?理想平衡与适度平衡?

为什么AVL树是平衡树 平衡因子 -> 整体的平衡

AVL 插入

  • 插入至多会导致$O(logn)$个结点失衡,全是当前结点的祖先。第一个失衡的结点,至少是新插入结点的祖父结点
  • 经过一次旋转调整后,可以使第一个失衡的结点恢复平衡,同时它的祖先也全部恢复平衡,全树重新平衡
  • 插入后有可能平衡性不变,但是高度发生改变

AVL 删除

  • 删除至多只会导致一个结点失衡。这个结点可以是被删除结点的父结点
  • 经过一次旋转调整后,当前局部会重新恢复平衡,但是其高度可能发生变化,也可能不变
  • 因此之后的祖先结点也可能接着发生失衡。并且这种失衡至多会发生$O(logn)$次。因此至多需要$O(logn)$次调整
  • 删除后有可能某一子树平衡性不变,但是高度降低
  • 必须完全遍历至根节点,没有中途退出循环的途径。因为无法确定上层祖先是否会失衡。

3+4重构

  • 可以证明经过3+4重构后得到的子树仍然是满足AVL平衡条件
  • 对应了之前的单旋转和双旋转所有的情况