1138 Postorder Traversal (25 分)

水~。

const int N=50010;
int pre[N],in[N];
unordered_map<int,int> pos;
int ans=-1;
int n;

void build(int prel,int prer,int inl,int inr)
{
    if(prel > prer) return;

    int root=pre[prel];
    int k=pos[root];
    int leftlen=k-inl;
    build(prel+1,prel+leftlen,inl,k-1);
    build(prel+leftlen+1,prer,k+1,inr);
    if(ans == -1) ans=root;
}

int main()
{
    cin>>n;
    for(int i=0;i<n;i++) cin>>pre[i];
    for(int i=0;i<n;i++)
    {
        cin>>in[i];
        pos[in[i]]=i;
    }
    build(0,n-1,0,n-1);
    cout<<ans<<endl;
    //system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/fxh0707/p/14477424.html