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