Skip to content

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]);
}