最小的 AVL 树使得连续插入导致所有四种旋转情况

Smallest AVL tree such that successive insertions causes all four cases of rotations

我应该从头开始使用整数值的插入来构建一个 AVL 树,这样树旋转的所有四种情况(简单左转、简单右转、双左转和双右转)都发生在连续插入之后。我想展示这样一个例子的工作并不多,但是寻找一个最小的例子并证明找到的例子是最小的似乎有点困难。有谁知道如何进行?应该发生双重旋转至少对树的最小高度有一些限制。

无论你从哪个旋转开始,你总是需要 3 个节点来引起第一次旋转,并且在那个点你总是会得到一个平衡的树。一旦一棵树达到平衡,您至少需要 2 个节点才能导致另一个不平衡。


值是随机的。

单右

50、25、10

双右

5、8

单左

75, 100

双左

63、55

这里可以形象化https://www.cs.usfca.edu/~galles/visualization/AVLtree.html

实现细节很少,但双旋转只是两个相反的单旋转的组合。