【问题标题】:Are interval, segment, fenwick trees the same?区间树、段树、芬威克树是否相同?
【发布时间】:2011-02-17 06:25:52
【问题描述】:

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

【问题讨论】:

  • 说“A 是 B 的概括”和“A 与 B 相同”是有区别的。

标签: algorithm data-structures fenwick-tree


【解决方案1】:

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

Fenwick 树/二进制索引树 link

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

范围树 link

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

区间树 link

存储实际间隔的树。最常见的情况是取一个中点,将相交区间保持在节点处,然后对该点左侧和右侧的区间重复该过程。

段树 link

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

【讨论】:

    【解决方案2】:

    我从未听说过binary indexed trees 称为任何事物的概括。这当然不是interval treessegment trees 的概括。我建议您按照链接说服自己相信这一点。

    这棵树是区间树和段树的概括

    如果你的老师所说的“这棵树”是指“二叉索引树”,那么他就错了。

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

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

    具有相同实现的是二叉索引树和芬威克树,因为那些相同的东西

    【讨论】:

    • 我看到了topcoder的文章,BIT中的很多查询都类似于区间树。
    • 它们可能相似,但这并不意味着您可以说一种数据结构源自另一种数据结构。区间树中的一个节点持有其父节点持有的一半区间,而 BIT 中的一个节点持有一个由数字的二进制表示形式给出的区间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多