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
:所有间隔端点的中值键
,左
:指向左和右子树右
:包含包含间隔
键的间隔的间隔列表
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