从上面简单的定义我们可以得出几个重要的信息:
- 平衡二叉树又称AVL 树
- 平衡二叉树必须是二叉排序树
- 每个节点的左子树和右子树的高度差至多为 1。
树的高度和深度本质区别:深度是从根节点数到它的叶节点,高度是从叶节点数到它的根节点。
平衡因子= 左子树高度 - 右子树高度
左旋:
插入
LL 型:
在插入位置往上找,第一个平衡因子为 2 的祖先 A,并且祖先的左孩子 B 的平衡因子为 1(可以判断这个时候在第一个失衡结点的左左处最长)
然后把 B 作为根节点,A 为 B 的右结点,B 左边放插入的多出来不平衡的部分,其他两个放 A 下面
这里是以 B 为中心右旋
LR 型:
可以判断最长的地方在左右,让 C 放在根节点的同时 B 和 A 各负责 C 的子树来降低高度
其他同理