AVL树中根的排名

问题描述 投票:0回答:1

[找到一个在AVL树中从上到下(渐近)根r的等级的函数,即找到一个函数$ f(n)$,因此对于每个具有$ n $节点的AVL树都有一个常数$ c> 0 $$ c * f(n)\ le rank(r)\ le n-c * f(n)$。

$ rank(r)$当他的左下树包含最大数量的节点并且由于它是AVL树时,得到最大值,对于高度为$ h $的树,左下子树的高度为$ h-1 $,并且当子树是具有$ 2 ^ {h-2} -1 $个节点的完整树时,节点数将最大,因此我们得到:$ rank(r)\ leq 2 ^ {h-2} -1 + 1 = 2 ^ {h-2} $

另一方面,当$ rank(r)$的左下角树包含最小数量的节点时,它获得最小值,而当左下角树是高度为$ h-2 $的斐波那契树时,发生这种情况,因此$ rank(r)\ geq \ phi ^ {h-2} +1 $。

现在我需要根据节点数量$ n $而不是高度$ h $来找到f。我的方向正确吗?希望任何帮助如何继续,谢谢。

data-structures avl-tree
1个回答
0
投票

f(n)= 0起作用...但是您可能想要更严格的限制。

在特定高度的最不平衡情况下,当根尽可能左移时,其右分支将是大小为Θ(2 h)=Θ(n)的完整树。很容易。

在左侧,您将有一个最小尺寸的树,这会更难一些。令M(h)为高度h的最小尺寸AVL树。我们有:

M(1)= 1;

M(2)= 2;否则

M(h)= M(h-1)+ M(h-2)+1

嗯,看来这个问题有一个有趣的答案。这种形式的递归关系具有我们可以解决的指数解。让我们开始

M(h)= e a + bh + c

那么我们有

e a + bh = e a + bh-b + e a + bh-2b + c +1

[区分双方w.r.t. h,我们得到

e a + bh = e a + bh-b + e a + bh-2b

e a + bh = e a + bh / e b + e a + bh / e 2b

(e b2 = e b +1

嗯,给我们e b =φ,其中φ是黄金比例:https://en.wikipedia.org/wiki/Golden_ratio

所以M(h)=Θ(φh

然后在最不平衡状态下的紧渐近边界变成:

Θ(f(n))=Θ(φlog n / n)=Θ(n φ-1]

所以f(n)= n φ-1是对您问题的最佳答案。

© www.soinside.com 2019 - 2024. All rights reserved.