首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >给定高度的AVL树的最大高度是多少?

给定高度的AVL树的最大高度是多少?
EN

Stack Overflow用户
提问于 2019-02-25 12:00:57
回答 2查看 967关注 0票数 2

我在寻找一个递归公式来寻找高度为h的最大高度AVL树的数量时遇到了一些麻烦。高度0有1,高度1有2,高度2有4,高度3有8,等等,对吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-25 19:15:06

让我们从另一个角度来看这个问题。

让我们找出给定高度的最小节点数,而不是给定节点数的最大高度。对于这个问题,我们有一个递归函数:n(h) = n(h-1) + n(h-2) + 1,因为您需要在右子树中至少有n(h-1)节点,在左子树中至少需要n(h-2)节点,并且需要一个节点作为根。

(图片和更完整的解释here)。

考虑到这一点,您必须找到一个满足n(h) < n < n(h+1)h,其中n是您给定的节点数。

顺便说一句,简短的答案是h < 2log(n) + 2

票数 1
EN

Stack Overflow用户

发布于 2019-02-25 17:26:53

在高度为h的AVL树中,最大节点数nn = 2^0 + 2^1 + ... + 2^(h-1) = 2^h - 1 (除了根之外,每个节点都有两个子节点,这意味着每一层的节点比前一层多两倍)。这就给出了根据节点数n计算高度h的公式:h = log(n + 1)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54859328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档