间隔,段,芬威克树是否相同?

时间:2010-05-08 23:08:13

标签: algorithm data-structures fenwick-tree

今天我听了关于fenwick树(二进制索引树)的讲座,老师说这个树是区间树和分段树的概括,但我对这三个数据结构的实现是不同的。 这个假设是真的吗?为什么?

2 个答案:

答案 0 :(得分:11)

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

Fenwick树/二进制索引树 link

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

范围树 link

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

间隔树 link

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

细分树 link

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

答案 1 :(得分:5)

我从未听过binary indexed trees所谓的任何概括。这肯定不是interval treessegment trees的概括。我建议你按照链接来说服自己。

  

这个树是间隔和分段树的推广

如果通过“这棵树”你的老师意味着“二元索引树”,那么他就错了。

  

但我对这三种数据结构的实现是不同的

当然他们是不同的,你的老师从不说他们不应该。他只是说一个是另一个的概括(这不是真的,但仍然)。无论哪种方式,实现都应该是不同的。

具有相同实现的是二元索引树和fenwick树,因为那些 是同一件事