这是一个家庭作业问题。我只是寻求帮助,因为我很难解决这个问题。
此AVL树的大小不是平衡因子,而是具有平衡因子的大小。
我必须证明高度是O(log n)。
方法1 由于AVL树的高度为O(log n),我基本上可以证明这是一个AVL树。因此它与常规AVL树具有相同的高度。但是,我不确定如何完全做到这一点。我基本上需要证明一侧的高度相对于另一侧最多为+/- 1。如果是,则它将是AVL树。
方法2 我可以相当容易地证明Omega(log n),我可以使用它是平衡的最佳情况,在这种情况下,高度是log(n)。
之后,我可以尝试证明Big O案例。这是我不确定的部分。我不知道如何显示高度的上限是log(n)。
有人可以把我推向正确的方向吗?提出了哪种方法?
答案 0 :(得分:0)
第一种方法不太可能成功 - AVL树的条件可能与您的描述不同。第二种方法更可行。
这里还有一个提示:感应。或者在更多的CS术语中,recurse :)你能证明所有具有n
个节点的修改AVL树所需的高度属性是真的吗?如果是这样,您知道此属性已经适用于您的右侧和左侧子树。你能用它做什么?
编辑:更详细的答案 - 假设您已经证明,对于最多N
个节点的所有树,高度受c log N
限制,对于一些足够大的c
。给定具有N+1
个节点的树,让L
和R
分别是其左右子树中的节点数。自L<=N
和R<=N
以来,根据我们的归纳假设,这两个子树的高度均由c log (number of nodes)
限定。完整树的高度以1 + max(c log L, c log R)
为界。现在,L+R=N
,L<=2R
和R<=2L
提供L<2N/3
和R<2N/3
。所以,max(log L, log R) < log(2N/3) = log N + log(2/3)
。 1 + c*max(log L, log R) < 1 + c*log N + c*log(2/3) < c*log(N+1)
,足够大c
。