1、什么是平衡二叉树

平衡因子(Balance Factor,简称BF): BF(T) =hL-hR
其中hL和hR分别为T的左、右子树的高度。

平衡二叉树(Balanced Binary Tree)(AVL树):
空树,或者任一结点左、右子树高度差的绝对值不超过1,即|BF(T) |≤ 1

最小不平衡子树:距离插入结点最近的,且平衡因子的绝对值大于1的结点为根的子树
平衡二叉树(AVL树)_数据结构

设 nh 高度为h的平衡二叉树的最少结点数。结点数最少时:
平衡二叉树(AVL树)_数据结构_02

给定结点数为 n的AVL树的最大高度:O(log2n)!

2、平衡二叉树的调整

1、RR旋转:麻烦结点在发现者右子树的右边
注意:麻烦结点不一定是其父节点的右节点,也可能是左节点
平衡二叉树(AVL树)_数据结构心法指南_03

2、LL旋转:麻烦结点在发现者左子树的左边
注意:麻烦结点不一定是其父节点的左节点,也可能是右节点

平衡二叉树(AVL树)_树形结构_04
3、LR旋转:麻烦结点Jan在发现者May左子树的右边

平衡二叉树(AVL树)_数据结构心法指南_05

4、RL旋转:麻烦结点Jan在发现者May右子树的左边

平衡二叉树(AVL树)_数据结构_06

注意:有时候插入元素即便不需要调整结构,也可能需要重新计算一些平衡因子。