Algorithm 如何生成尽可能不平衡的AVL树?
我在一些论文中看到了这一点,有人认为,当我们删除AVL树的一个节点时,最多可以有log(n)次旋转。我相信我们可以通过尽可能不平衡地生成AVL树来实现这一点。问题是如何做到这一点。这将对我研究移除旋转有很大帮助。非常感谢 如果你想制作一个最大不平衡的AVL树,你需要寻找一个,归纳定义如下:Algorithm 如何生成尽可能不平衡的AVL树?,algorithm,data-structures,avl-tree,Algorithm,Data Structures,Avl Tree,我在一些论文中看到了这一点,有人认为,当我们删除AVL树的一个节点时,最多可以有log(n)次旋转。我相信我们可以通过尽可能不平衡地生成AVL树来实现这一点。问题是如何做到这一点。这将对我研究移除旋转有很大帮助。非常感谢 如果你想制作一个最大不平衡的AVL树,你需要寻找一个,归纳定义如下: 阶数为0的斐波那契树为空 阶数为1的斐波那契树是单个节点 n+2阶斐波那契树是一个节点,其左子节点是n阶斐波那契树,右子节点是n+1阶斐波那契树 例如,下面是一个5阶斐波那契树: 斐波那契树表示AVL树
- 阶数为0的斐波那契树为空
- 阶数为1的斐波那契树是单个节点
- n+2阶斐波那契树是一个节点,其左子节点是n阶斐波那契树,右子节点是n+1阶斐波那契树
function FibonacciTree(int order) {
if order = 0, return the empty tree.
if order = 1, create a single node and return it.
otherwise:
let left = FibonacciTree(order - 2)
let right = FibonacciTree(order - 1)
return a tree whose left child is "left" and whose right child is "right."
希望这有帮助 回答得好。如果有一个图像与之匹配就好了。(请特别注意,每个非叶子都有不同于0的平衡“因子”)。另请参见: