01-TRIE树合并
cpp
int merge(int x,int y){
if(!y)return x;
if(!x)x=++idx,minv[idx]=INF,maxv[idx]=-INF;
minv[x]=min(minv[x],minv[y]);
maxv[x]=max(maxv[x],maxv[y]);
tr[x][0]=merge(tr[x][0],tr[y][0]);
tr[x][1]=merge(tr[x][1],tr[y][1]);
return x;
}
void dfs_pre(int p){
if(tr[p][0])dfs_pre(tr[p][0]);
if(tr[p][1])dfs_pre(tr[p][1]);
tr[p][0]=merge(tr[p][0],tr[p][1]);
}