插入或删除节点后,可能会造成 AVL 树的性质 2 被破坏。因此,需要沿着从被插入/删除的节点到根的路径对树进行维护。如果对于某一个节点,性质 2 不再满足,由于我们只插入/删除了一个节点,对树高的影响不超过 1,因此该节点的平衡因子的绝对值至多为 2。由于对称性,我们在此只讨论左子树的高度比右子树大 2 的情况,即下图中 $h(B)-h(E)=2$ 。此时,还需要根据 $h(A)$ 和 $h(C)$ 的大小关系分两种情况讨论。需要注意的是,由于我们是自底向上维护平衡的,因此对节点 D 的所有后代来说,性质 2 仍然是被满足的。
-![](images\avl1.jpg)
+![](./images/avl1.jpg)
### $h(A)\geq h(C)$
其中 $h(C)\geq x$ 是由于节点 B 满足性质 2,因此 $h(C)$ 和 $h(A)$ 的差不会超过 1。此时我们对节点 D 进行一次右旋操作(旋转操作与其它类型的平衡二叉搜索树相同),如下图所示。
-![](images\avl2.jpg)
+![](./images/avl2.jpg)
显然节点 A、C、E 的高度不发生变化,并且有
此时我们先对节点 B 进行一次左旋操作,再对节点 D 进行一次右旋操作,如下图所示。
-![](images/avl3.jpg)
+![](./images/avl3.jpg)
显然节点 A、E 的高度不发生变化,并且 B 的新右儿子和 D 的新左儿子分别为 C 原来的左右儿子,则有