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