AVL 树和 WAVL 树之间关于一系列插入、删除和搜索的比较



我们从一个空树开始,并执行相同的插入,删除和搜索序列。一次使用 AVL 树,一次使用 WAVL 树。问题是要确定我们在 AVL 树中更改节点等级的次数是否与我们更改 WAVL 树中节点等级的次数相同(或数字乘以常量(。

我认为这不是真的。让我们调用序列 n 的长度。首先,我们做 n/2 个插入。插入在两棵树中或多或少需要相同数量的等级提升。我们最终得到了两棵平衡的树。然后我们取一个键小于之前每个键的节点,并执行序列插入(x(,删除(x(,插入(x(,删除(x(,删除(x(,...(我们做剩下的 n/2 次(。

这样,AVL 树中的最终 n/2 个操作将至少需要 (n/2( logn 时间,而在 WAVL 中则需要 n/2 时间(可以用潜在函数证明(。

答案是决定是错误的。例如,插入 n/2 个节点。然后,交替插入和删除最小节点。 在 AVL 树中,它将需要 (n/2(*logn,而在 WAVL 中,它将花费不超过 2n 个操作。

最新更新