计算堆的最后一级的堆积

问题描述:

是否有函数来计算堆的最大堆和最小堆?最后一级计算堆的最后一级的堆积

例如,当堆大小为128

是在HEAPSIZE 128,当我有128个节点的二叉树?

+0

您是否在问二进制堆数据结构? – DAle

+0

是的。 @DAle。是否有不同的堆数据结构。我认为它总是一棵二叉树? – flowers1234

+0

https://en.wikipedia.org/wiki/Heap_(data_structure)#Variants – DAle

二进制堆是complete binary tree。这使我们有可能从堆的大小发现等级的数量:
enter image description here
k水平(height(H) == k-1)堆的最小尺寸为2^k,最大的是2^(k+1)-1

+0

谢谢! 。 @DAle。但是,当我有堆128.应该如何计算与您的最大值的消除。 ** 2 ^(128 + 1)-1 **?但在我的例子中,128不是* k **:/ – flowers1234

+0

@ flowers1234什么是heapsize?堆中的许多元素? – DAle

+0

我认为这是节点的数量。所以,用_k_表示堆的高度。因此我必须知道我的树有128个节点有多少层,对吧? 。然后我可以使用公式'2 ^(k + 1)-1'来计算最后一级的最大数值?对不起,对于这种情况。 @DAle – flowers1234