algorithm - 间隔树、段树、芬威克树是否相同?

标签 algorithm data-structures fenwick-tree

今天听了一个关于fenwick树(二叉索引树)的讲座,老师说这棵树是区间树和线段树的推广,但是我对这三种数据结构的实现是不同的。 这个确认是真的吗?为什么?

最佳答案

尽管不同的人必然会混淆这些术语,但以下分类似乎是合理的。

芬威克树/二叉索引树 link

您使用单个数组和二进制表示形式的操作来存储前缀和(也称为累积和)。元素可以是幺半群的成员。

范围树 link

树族,其中每个节点代表给定范围的一个子范围,比如 [0, N]。用于计算区间的关联运算。

区间树 link

存储实际间隔的树。最常见的是,您取一个中点,在节点处保持相交间隔,并在点的左侧和右侧的间隔重复该过程。

线段树 link

类似于范围树,其中叶子是可能连续空间中的基本区间而不是离散空间,更高的节点是基本区间的并集。用于检查是否包含点。

关于algorithm - 间隔树、段树、芬威克树是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2795989/

相关文章:

arrays - 合并排序算法(合并数组部分)

java - 找出长度为 k 的递增子序列的总数

algorithm - 使用 BIT 或 Fenwick 树的范围异或求和

algorithm - 时间复杂度为 O(2^(n/2)) 的整数分解算法的效率如何?

sql - 在 SQL 中,是否可以比我使用游标的算法(参见代码)更有效地完成顺序范围选择?

arrays - 在数组中的给定位置之后查找元素第一次出现的有效方法是什么?

json - 我应该如何在Scala中指定类似JSON的非结构化数据的类型?

python - 最短路径tsp算法

c++ - 汉明立方体顶点上的查询点

algorithm - 计算左下象限的点数?