AVL 树是一种平衡二叉树,平衡二叉树递归定义如下:
- 左右子树的高度差小于等于 1
- 其每一个子树均为平衡二叉树(AVL树)
需要一个监督指标,以此来判断是否需要进行平衡操作。这个监督指标被称为“平衡因子(Balance Factor)”。定义如下:
平衡因子: 某个结点的左子树的高度减去右子树的高度得到的差值。
即可以以平衡因子来定义AVL树:所有结点的平衡因子的绝对值都不超过 1 的二叉树。
若平衡因子大于1,则AVL树需要做出平衡操作,平衡操作包括两个,1.左旋,2.右旋
左旋
右旋
不平很的情况分为四种分别为LL,RR,LR,RL
- LL:这种情况是新增的节点在左孩子的左子树上,这种情况需要将左孩子进行右旋
-
RR:这种情况是新增的节点在右孩子的右子树上,这种情况需要将右孩子进行左旋(情况跟LL对称)
-
LR(Left Right):这种情况是新增的节点在左孩子的右子树上,这种情况需要将新增节点的父节点先左旋后将右旋
- RL(Right left):这种情况是新增的节点在右孩子的左子树上,这种情况需要将新增节点的父节点先右旋后左旋(情况跟LR对称)