在 AVL 树中,任一节点对应的两棵子树的最大高度差为 1,因此它也被称为高度平衡树
例如图 2.1 不是平衡二叉树,因为结点 60 的左子树不是平衡二叉树。
图 2.2 也不是平衡二叉树,因为虽然任何一个结点的左子树与右子树都是平衡二叉树,但高度之差已经超过 1 。
定义: 某节点的左子树与右子树的高度(深度)差即为该节点的平衡因子(BF,Balance Factor),平衡二叉树中不存在平衡因子大于 1 的节点。在一棵平衡二叉树中,节点的平衡因子只能取 0 、1 或者 -1 ,分别对应着左右子树等高,左子树比较高,右子树比较高。
若 A 的左孩子节点 B 的右子树 E 插入节点 F ,导致节点 A 失衡,如 2.3 图:
先左旋再右旋
如图 2.4 所示
先右旋再左旋
跟二叉搜索树的删除方式一样,也分为四种情况
(1)删除叶子节点 (2)删除的节点只有左子树 (3)删除的节点只有右子树 (4)删除的节点既有左子树又有右子树
在上篇文章有写,这里不再赘述