为什么索引i的堆节点(从1开始)和它的高度h满足(2 ^ h)* i< = n< (2 ^(h + 1)* i)其中n是堆大小?

时间:2013-01-10 09:52:40

标签: heap

为什么索引i的堆节点(从1开始)及其高度h满足(2 ^ h)* i< = n< (2 ^(h + 1)* i)其中n是堆大小?

1 个答案:

答案 0 :(得分:0)

案例N:1

2^h <= 1 <= 2^(h+1)

注意节点的高度是log(n)= log(1)= 0

= 2^0 <= 1 <= 2^(0+1) 
= 1 <= 1 <= 2

所以你可以看到它的情况n = 1

将h = log(n)替换为原始问题

= 2^h <= n <= 2^(h+1)
= 2^(log(n)) <= n <= 2^(log(n)+1)   #replace n = log(n)
= n <= n <= 2^log(n) * 2^1   #exponents property
= n <= n <= 2n

注意如果我们在每一边除以'i',索引'i'就会取消。