从上面简单的定义我们可以得出几个重要的信息:

  • 平衡二叉树又称AVL 树
  • 平衡二叉树必须是二叉排序树
  • 每个节点的左子树和右子树的高度差至多为 1。

树的高度和深度本质区别:深度是从根节点数到它的叶节点,高度是从叶节点数到它的根节点。

平衡因子= 左子树高度 - 右子树高度


左旋:


插入

LL 型:

在插入位置往上找,第一个平衡因子为 2 的祖先 A,并且祖先的左孩子 B 的平衡因子为 1(可以判断这个时候在第一个失衡结点的左左处最长)

然后把 B 作为根节点,A 为 B 的右结点,B 左边放插入的多出来不平衡的部分,其他两个放 A 下面

这里是以 B 为中心右旋

LR 型:

可以判断最长的地方在左右,让 C 放在根节点的同时 B 和 A 各负责 C 的子树来降低高度

其他同理