Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Time complexity 区间树的时间复杂度分析_Time Complexity_Interval Tree - Fatal编程技术网

Time complexity 区间树的时间复杂度分析

Time complexity 区间树的时间复杂度分析,time-complexity,interval-tree,Time Complexity,Interval Tree,我当前学习的间隔树对于每个节点都有以下数据结构: 键:所有间隔端点的中值 左,右:指向左和右子树 间隔:包含包含键的间隔的间隔列表 更准确的信息可以在这里找到 我了解到使用区间树进行查询的时间复杂度是O(logn+k),其中n是区间数,k是报告结果数 我不太理解logn部分。假设v是区间树中的当前节点,Q是查询区间。算法如下所示: if v.key is in Q, add v.intervals into results search_on_left_subtree searc

我当前学习的间隔树对于每个节点都有以下数据结构:

  • :所有间隔端点的中值
  • :指向左和右子树
  • 间隔
    :包含包含
    键的间隔的间隔列表
更准确的信息可以在这里找到

我了解到使用区间树进行查询的时间复杂度是O(logn+k),其中n是区间数,k是报告结果数

我不太理解
logn
部分。假设
v
是区间树中的当前节点,
Q
是查询区间。算法如下所示:

if v.key is in Q,
  add v.intervals into results
  search_on_left_subtree
  search_on_right_subtree
else if Q.right < key,
  add some intervals
  search_on_left_subtree
else
  add some intervals
  search_on_right_subtree
如果v.key在Q中,
将v.间隔添加到结果中
在左子树上搜索
在右子树上搜索
否则,如果Q.right<键,
添加一些间隔
在左子树上搜索
其他的
添加一些间隔
在右子树上搜索

在第一个
if
中,我们可能需要进入两个子树。那么,在最坏的情况下,我们可能不得不遍历所有树节点,使时间复杂度为O(n+k)吗

它来自一个观察,如果你有一个长度为n的区间,那么我们可以把它分成k段,其中k