Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 基于数组的堆中最后一行的大小是多少_Math_Heap_Binary Tree - Fatal编程技术网

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

Math 基于数组的堆中最后一行的大小是多少,math,heap,binary-tree,Math,Heap,Binary Tree,在一个基于数组的堆中,假设项目是以广度优先的顺序插入的,则可以很容易地计算深度D处每行的大小。因为堆是平衡树 RowSize = pow(2, D); 最大深度也可以很容易地计算出来 MaxD = log2(Count); 但最后一行的大小是多少。如何知道最深叶子的数量 理论最大值为2的最大幂。但它可以拥有比这更少的东西。我想知道最后一行的大小是多少 Count - (int)pow(2, maxD) + 1; 感谢wolframAlpba透露的配方 您需要截断maxD和pow(2,max

在一个基于数组的堆中,假设项目是以广度优先的顺序插入的,则可以很容易地计算深度D处每行的大小。因为堆是平衡树

RowSize = pow(2, D);
最大深度也可以很容易地计算出来

MaxD = log2(Count);
但最后一行的大小是多少。如何知道最深叶子的数量

理论最大值为2的最大幂。但它可以拥有比这更少的东西。我想知道最后一行的大小是多少

Count - (int)pow(2, maxD) + 1;
感谢wolframAlpba透露的配方


您需要截断
maxD
pow(2,maxD)
。否则,您将得到错误的结果。我想你确实想要
Count-(int)pow(2,(int)maxD)+1
。我修好了。谢谢。这是一个几何和,不需要Wolfram | Alpha!:)我刚刚意识到
2^maxD
2^log2(Count)
所以数学上
Count-(2^maxD)+1
等于1。所以截断在这里起着重要的作用!