小编dau*_*ess的帖子

段树2*2 ^(ceil(log(n))) - 1的数组内存如何?

链接:http://www.geeksforgeeks.org/segment-tree-set-1-sum-of-given-range/.这是引用的文字:

我们从段arr [0开始...N-1].每当我们将当前段分成两半时(如果它还没有成为长度为1的段),然后在两半上调用相同的过程,并且对于每个这样的段,我们将总和存储在相应的节点中.除最后一级之外,构造的分段树的所有级别都将被完全填充.此外,树将是一个完整的二叉树,因为我们总是在每个级别将两个分段分成两半.由于构造的树总是具有n个叶子的完整二​​叉树,因此将存在n-1个内部节点.所以节点的总数将是2n-1.段树的高度将是ceil [log(n)].由于树是使用数组表示的,并且必须维护父索引和子索引之间的关系,因此为分段树分配的内存大小将为2*2 ^(ceil(log(n))) - 1.

如何分配内存(上面的para的最后一行)那么多?如果父代码和子代码索引正确,它们如何存储在代码中?请在此背后给出推理.如果这是假的那么什么是正确的值?

memory arrays tree data-structures segment-tree

18
推荐指数
4
解决办法
8645
查看次数

标签 统计

arrays ×1

data-structures ×1

memory ×1

segment-tree ×1

tree ×1