摘要:
过程 合并并不困难,对于两棵线段树,合并无疑就是就两棵线段树维护的区间信息进行合并。 就比如,有两棵线段树如下图: 将第二棵树合并到第一棵树,就是把除了维护 \([2, 2]\) 的全部对应加,而 \([2, 2]\) 则新开节点维护。 时间复杂度显然 \(\mathcal{O}(n \log n) 阅读全文
摘要:
过程 线段树分裂是线段树合并的逆操作,即将一个区间信息分裂到新的树中,新的树一般需要新建。 注意当分裂和合并都存在时,我们在合并的时候必须回收节点,以避免分裂时会可能出现节点重复占用的问题。 时间复杂度显然 \(\mathcal{O}(\log n)\)。 实现 //将 x 分裂出 [p, q] 到 阅读全文