首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >段树、区间树、二进制索引树和范围树有什么不同?

段树、区间树、二进制索引树和范围树有什么不同?
EN

Stack Overflow用户
提问于 2013-07-04 17:04:40
回答 2查看 41.4K关注 0票数 222

段树、区间树、二进制索引树和范围树在以下方面有何不同:

  • Key idea/definition
  • Applications in higher dimensions/空间消耗/

请不要只给出定义。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-06 23:49:09

所有这些数据结构都用于解决不同的问题:

  • Segment树存储间隔,并针对“这些间隔中的哪些包含给定点”进行了优化。queries.
  • Interval树也存储了间隔,但针对“这些间隔中的哪些与给定的间隔重叠”查询进行了优化。它也可以用于点查询-类似于段树。
  • Range树存储点数,并针对“哪些点落在给定间隔内”进行了优化。queries.
  • Binary索引树存储每个索引的项数,并针对“索引m和n之间有多少项”查询进行了优化。

一个维度的性能/空间消耗:

  • Segment树- O(k+logn)预处理时间,O(k+logn)查询时间,O(k+logn)
    • Segment树-O(k+logn)预处理时间,O(logn)查询时间,O(n) space
    • Range树-O(k+logn)预处理时间,O(k+logn)查询时间,O(n) space
    • Range索引树-O(k+logn)预处理时间,O( logn)查询时间,O(n)

(k是报告结果的数量)。

所有数据结构都可以是动态的,因为使用场景包括数据更改和查询:

  • Segment树计数-间隔可以在O(logn)时间内添加/删除(请参阅here)
  • Interval树-间隔可以在O(logn)时间内添加/删除)
    • Segment树-新点可以在O(logn)时间内添加/删除(请参阅索引树-每个索引的项数可以在O(logn)时间内增加

更高维度(d>1):

  • Segment树- O(n( logn) ^d)预处理时间,O(k+( logn) ^d)查询时间,O(n(logn)^(d-1)) space
  • Range树- O(n Logn)预处理时间,O(k+(logn)^d)查询时间,O(n Logn)space
  • Range树k+- O(n(logn)^d)预处理时间,O(k+(logn)^d)查询时间,O(n(Logn)^(d-1) space
  • Binary索引树- O(n(logn)^d)预处理时间,O((logn)^d)查询时间,O(n(logn)^d) space
  • Binary
票数 355
EN

Stack Overflow用户

发布于 2021-03-22 01:16:39

可以改进分段树和二进制索引树的预处理和空间的界限:

中作为操作追加到末尾

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17466218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档