1. 核心定义:什么是平衡?

在普通的二叉搜索树(BST)中,如果按顺序插入 1, 2, 3, 4,它会退化成一个链表,查询效率从 掉到

AVL 树通过**平衡因子(Balance Factor, BF)**来强制约束:

约束条件: 每一个节点的 必须 (即只能是 )。一旦出现 ,立刻触发“旋转”逻辑进行修复。


2. 四种旋转

当一个新节点插入导致失衡时,我们需要通过旋转来降低高子树的高度。

失衡类型表现(从失衡节点往下看)修复手段旋转本质
LL 型左孩子的左边太重单向右旋把左孩子拉上来当爹,旧爹变右孩子
RR 型右孩子的右边太重单向左旋把右孩子拉上来当爹,旧爹变左孩子
LR 型左孩子的右边太重先左后右先对左孩子左旋变 LL,再对根右旋
RL 型右孩子的左边太重先右后左先对右孩子右旋变 RR,再对根左旋

3. 删除

首先按照普通二叉搜索树的规则找到并删除节点:

  • 若是叶子节点:直接删除。

  • 若只有一个孩子:用孩子节点替代当前节点。

  • 若有两个孩子

    1. 找到该节点的中序后继(右子树中最小的节点)或中序前驱(左子树中最大的节点)。

    2. 用后继(或前驱)的值覆盖当前节点。

    3. 转而删除那个后继(或前驱)节点(此时问题转化为前两种简单情况)。