我知道AVL树中最小节点数的公式是
S(h) = S(h-1) + S(h-2) + 1
然而,我真的不知道如何使用这个函数,假设我们的 AVL 高度为 6。
答案告诉我最小值 = 7 + 4 + 1 = 12。但是你如何得到这个数字呢?我的意思是,当你插入 6 时,不是 (6-1) + (6-2) + 1 吗?
谁能向我解释如何解决这个问题?我的老师还没有谈论过这个,但我真的很想自己解决这个问题,以便为下周的考试做好准备。
In S(h) = S(h-1) + S(h-2) + 1
,
S(h)
is a 递归的函数/公式 http://en.wikipedia.org/wiki/Recursion_%28computer_science%29。递归函数在其函数体内调用自身(以更小或更简单的方式)。
请注意,递归函数必须有一些基本情况,在本例中:
S(1) = 0
S(2) = 1
那么我们说h = 6
, then S(h = 6)
将是(只是替换):
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)