段树,间隔树,二进制索引树和范围树之间有什么区别?

在以下方面,段树,间隔树,二进制索引树和范围树之间有什么区别:

  • 关键思想/定义
  • 应用领域
  • 更高尺寸/空间消耗下的性能/订单

请不要仅仅给出定义。

回答:

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

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

一维性能/空间消耗:

  • -O(n logn)预处理时间,O(k + logn)查询时间,O(n logn)空间
  • -O(n logn)预处理时间,O(k + logn)查询时间,O(n)空间
  • -O(n logn)预处理时间,O(k + logn)查询时间,O(n)空间
  • -O(n logn)预处理时间,O(logn)查询时间,O(n)空间

(k是报告的结果数)。

从使用场景包括数据更改和查询的角度来看,所有数据结构都是动态的:

  • -可以在O(logn)时间中添加/删除间隔(请参见此处)
  • -可以在O(logn)时间中添加/删除间隔
  • -可以在O(logn)时间中添加/删除新点(请参阅此处)
  • -每个索引的项目数可以在O(logn)时间中增加

较大尺寸(d> 1):

  • -O(n(logn)^ d)预处理时间,O(k +(logn)^ d)查询时间,O(n(logn)^(d-1))空间
  • -O(n logn)预处理时间,O(k +(logn)^ d)查询时间,O(n logn)空间
  • -O(n(logn)^ d)预处理时间,O(k +(logn)^ d)查询时间,O(n(logn)^(d-1)))空间
  • -O(n(logn)^ d)预处理时间,O((logn)^ d)查询时间,O(n(logn)^ d)空间

以上是 段树,间隔树,二进制索引树和范围树之间有什么区别? 的全部内容, 来源链接: utcz.com/qa/412716.html

回到顶部