首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AVL树的最小节点数?

AVL树的最小节点数?
EN

Stack Overflow用户
提问于 2014-01-25 05:47:10
回答 8查看 54.7K关注 0票数 8

我知道在AVL树中求最小节点数的公式是

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

但是,我真的不知道如何使用这个函数,比如说,如果AVL的高度是6。答案告诉我,最小值=7+4+1 =12。但是你怎么得到这个数字呢?我的意思是当你插入6,不是(6- 1 ) + (6-2) +1吗?

有人能向我解释怎么解决这个问题吗?我的老师还没有谈到这个问题,但我真的想自己解决这个问题,以便为下周的考试做好准备。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-01-25 05:52:53

S(h) = S(h-1) + S(h-2) + 1中,

S(h)函数/公式。递归函数(以更小或更简单的方式)在其体内调用自己。

请注意,递归函数必须有一些基本情况,在本例中:

代码语言:javascript
运行
复制
S(1) = 0
S(2) = 1

因此,假设是h = 6,那么S(h = 6)将是(只是替换):

代码语言:javascript
运行
复制
S(6) = S(6-1) + S(6-2) + 1
S(6) = S(5) + S(4) + 1 
S(6) = 2*S(4) + S(3) + 1 + 1
S(6) = 2*(S(3) + S(2) + 1) + S(3) + 2
S(6) = 3*S(3) + 2*S(2) + 4
S(6) = 3*(S(2) + S(1) + 1) + 2*S(2) + 4
S(6) = 5*S(2) + 3*S(1) + 7
S(6) = 5*1 + 3*0 + 7
S(6) = 12
票数 14
EN

Stack Overflow用户

发布于 2016-01-13 15:29:53

对于高度为6的树,AVL树中的最小节点数不是20个,应该是33个。

下面的方程应该演示N(h)函数的递归调用。

由于我们知道N(0)=1,N(1) = 2,N(2) = 4,我们可以将下列方程简化为h= 6的这些已知数。

由于AVL树是平衡的BST树,对于每一个高度h,在向前移动之前,我们必须形成一个h-1和h-2树,通过添加另一个节点来构造一个each树。因此,公式N(h)=1+N(h-1)+N(h-2)

N(3)=1+N(3-1)+N(3-2)=1+N(2)+N(1)=7

N(4)=1+N(4-1)+N(4-2)=1+N(3)+N(2)=12

N(5)=1+N(5-1)+N(5-2)=1+N(4)+N(3)=20

N(6)=1+N(6-1)+N(6-2)=1+N(5)+N(4)=33

我希望这能帮到你

票数 8
EN

Stack Overflow用户

发布于 2017-03-26 03:31:59

对于函数N(h) =1+N(h-1)+N(h-2)

麻省理工学院朗诵04陈述这个递归函数的基本情况是: N(1) = 1;N(2) =2

因此

N(3) =1+ N(2) + N(1) =1+2+1=4

N(4) =1+ N(3) + N(2) =1+4+2=7

N(5) =1+ N(4) + N(3) =1+7+4= 12

N(6) =1+ N(5) + N(4) =1+ 12 +7= 20

N(7) =1+ N(6) + N(5) =1+ 20 + 12 = 33

N(8) =1+ N(7) + N(6) =1+ 33 + 20 = 54

等等,只要把先前答案中的数字插进去.

https://courses.csail.mit.edu/6.006/spring11/rec/rec04.pdf

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

https://stackoverflow.com/questions/21347187

复制
相关文章

相似问题

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