线段树合并 笔记
一、二叉树合并
给你两棵二叉树,每棵树的每个节点有点权,现在要合并成一棵二叉树,相同位置的点点权相加,如何操作?
由于这种问题一般有
此处应有图。
接着考虑从根节点开始暴力把
从
开始递归,合并 的点权。 递归左儿子
,合并 的点权。 递归左儿子
, 没有左儿子,取 ,返回。 递归右儿子
,均为空,返回。
递归右儿子
。 递归左儿子
, 没有左儿子,合并后就有了, 的左儿子指向 返回。 递归右儿子
,同 的情况,返回。
故新树如下所示。
此处应有图。
二、线段树合并
线段树本身也是二叉树,所以可以直接用二叉树合并的方法合并。
三、刷题记录
1. P4556 [Vani有约会] 雨天的尾巴 /【模板】线段树合并
对
关于空间复杂度:一次操作会至多在
2. P3224 [HNOI2012] 永无乡
同样的,考虑对每个连通块维护一棵,即线段树下标表示岛屿的重要程度,值为是否存在
3. P3521 [POI2011] ROT-Tree Rotations
考虑对每个节点维护一棵权值线段树,同上。由于是先序遍历,故交换前后对回溯以后的答案不影响,只影响当前的
合并两棵树时,有逆序对全在左子树,全在右子树,跨越两棵子树的情况。处理第三种并递归左右即可,而第三种显然时