【问题标题】:What is size of last row in array based heap基于数组的堆中最后一行的大小是多少
【发布时间】:2018-07-03 00:23:45
【问题描述】:

在基于数组的堆中,假设项目以宽度一阶插入,深度 D 处的每一行的大小可以轻松评估。因为堆是平衡树。

RowSize = pow(2, D);

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

MaxD = log2(Count);

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

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

【问题讨论】:

    标签: math heap binary-tree


    【解决方案1】:

    最后一行大小是

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

    感谢 wolframAlpba 揭示公式。

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

    【讨论】:

    • 您需要截断maxDpow(2, maxD)。否则,你会得到不正确的结果。我想你想要Count - (int)pow(2, (int)maxD) + 1
    • 确实如此。我修好了。谢谢。
    • 这是一个几何和,不需要 Wolfram|Alpha! :)
    • 我刚刚意识到2^maxD2^log2(Count) 所以数学上Count - (2^maxD) + 1 等于1。所以截断在这里很重要!
    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 2013-01-09
    • 2012-09-19
    • 1970-01-01
    • 2010-10-02
    • 2015-04-01
    • 2020-07-29
    相关资源
    最近更新 更多