基于数组的堆中最后一行的大小是多少

What is size of last row in array based heap

在基于数组的堆中,假设项目以广度第一顺序插入,可以很容易地评估深度为 D 的每一行的大小。由于堆是平衡树。

RowSize = pow(2, D);

最大深度也可以很容易地计算出来。

MaxD = log2(Count);

但是最后一行的大小是多少。如何知道最深的叶子数?

理论最大值是 MaxD 的 2 次方。但它可以小于此值。我想知道那个数字

最后一行的大小是

Count - (int)pow(2, maxD) + 1;

感谢 wolframAlpba 揭示公式。

https://www.wolframalpha.com/input/?i=Sum+2%5Ex+x%3D0+to+n