最小的 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
实现细节很少,但双旋转只是两个相反的单旋转的组合。
我应该从头开始使用整数值的插入来构建一个 AVL 树,这样树旋转的所有四种情况(简单左转、简单右转、双左转和双右转)都发生在连续插入之后。我想展示这样一个例子的工作并不多,但是寻找一个最小的例子并证明找到的例子是最小的似乎有点困难。有谁知道如何进行?应该发生双重旋转至少对树的最小高度有一些限制。
无论你从哪个旋转开始,你总是需要 3 个节点来引起第一次旋转,并且在那个点你总是会得到一个平衡的树。一旦一棵树达到平衡,您至少需要 2 个节点才能导致另一个不平衡。
值是随机的。
单右
50、25、10
双右
5、8
单左
75, 100
双左
63、55
这里可以形象化https://www.cs.usfca.edu/~galles/visualization/AVLtree.html
实现细节很少,但双旋转只是两个相反的单旋转的组合。