一、 相关概念
1.1 AVL定义
平衡二叉树又称为AVL树,它或者是颗空树,或者是具有下列性质的二叉排序树:
- 左右两个子树的高度差值不超过1;
- 它的左右子树也是一颗平衡二叉树;
1.2 平衡因子
某节点的左子树与右子树的高度差即为该节点的平衡因子BF。
按照定义我们可以得到,AVL上所有结点的平衡因子只可能是 -1,0 或 1。
下面这张图中标出了每一个节点的平衡因子,而根节点的平衡因子为-2,所以显然这不是一颗平衡二叉树。
1.3 AVL的作用
为了解决搜索二叉树在极端的情况下退化成单支树,引入了平衡二叉树,使得查找的效率得到改善;
二、 失衡调整
在平衡二叉树中插入一个新结点后,从该结点起向上寻找第一个不平衡的结点,以确定该树是否失衡。若找到,则以该结点为根的子树称为最小失衡子树。
2.1 LL型
LL型指的是在最小失衡子树的左孩子的左子树上插