P1030 [NOIP2001 普及组] 求先序排列

给定后序中序求先序,树中每个结点的值各不相同。

unordered_map<char,int> pos;
string in,post;
int n;

void build(int inl,int postl,int n)
{
    if(!n) return;

    char root=post[postl+n-1];
    int k=pos[root];
    int len=k-inl;

    cout<<root;
    build(inl,postl,len);
    build(k+1,postl+len,n-len-1);
}

int main()
{
    cin>>in>>post;

    n=in.size();

    for(int i=0;i<n;i++) pos[in[i]]=i;

    build(0,0,n);

    //system("pause");
    return 0;
}
posted @ 2021-01-25 10:48  Dazzling!  阅读(216)  评论(0编辑  收藏  举报