AVL 树:
AVL 树是一种自平衡二叉搜索树 ( BST ),其中所有节点的左右子树的高度差不能超过一个。
AVL树的示例:
非 AVL 树的树示例:
上面的树不是 AVL,因为 8 和 12 的左右子树的高度差大于 1。
为什么要用 AVL 树?
大多数 BST 操作(例如,搜索、最大值、最小值、插入、删除……等)需要O(h)时间,其中h是 BST 的高度。对于倾斜的二叉树,这些操作的成本可能会变成O(n)。如果我们确保在每次插入和删除后树的高度保持为O(log(n)),那么我们可以保证所有这些操作的上限为O(log(n))。AVL 树的高度始终为O(log(n)),其