algorithm - 为什么线段树需要是满二叉树?

标签 algorithm data-structures binary-tree segment-tree

构造线段树时,为什么要是满二叉树?我采用了一些示例输入数组,当使它们完成二叉树时,我在范围结果中得到了相同的最小值。那么当完整的二叉树也给出相同的结果时,为什么要把它变成一个完整的二叉树。 输入数组- 1, 3, 5, 7, 9, 11

最佳答案

线段树的数组表示例如数组 1、3、5、7、9、11 可以这样存储(假设范围查询正在寻找最小元素)

对不起,懒惰的图表。

enter image description here

树节点的数量计算为 pow*2-1,其中 pow = 大于或等于 n 的最小 2 次幂。

显然上面的线段树表示是满二叉树而不是完全二叉树。

你能分享你的线段树数组表示吗?你如何将它存储为完整的二叉树?

关于algorithm - 为什么线段树需要是满二叉树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45891542/

相关文章:

algorithm - 纸牌魔术序列递归算法

algorithm - 实时显示一段时间内最常见/重复的元素

c - 用户想要删除一个值,但该值不在二叉树上。该如何治疗呢?

algorithm - 具有复合键的 Cassandra 哈希算法

给定 n 条线查找所有线段交点的算法

Java:存储和检索大量字符串的最快结构

c++ - 二叉树形成错误

python - Matplotlib Canvas 绘图

c++ - 将 STL 算法与 Qt 容器结合使用

binary-tree - 如果删除根节点如何重新平衡 BST