HDU-1710知道前序中序求后序
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int p1[1001];
int p2[1001];
void judge(int a,int b,int n,int flag)
{
if(n==1){ //如果存在左子树或右子树就直接输出
cout<<p1[a]<<" ";
return ;
}else if(n<=0)return ; //如果不存在左子树或右子树就返回上一层
int i; //继续划分为左子树和右子树
for(i=0;p1[a]!=p2[b+i];i++);//找到划分点也就是根节点
judge(a+1,b,i,0); //左子树遍历
judge(a+i+1,b+i+1,n-i-1,0); //右子树遍历
if(flag==1) cout<<p1[a]; //最原始的跟节点
else cout<<p1[a]<<" ";
}
int main()
{
int n,i;
while(cin>>n){
for(i=1;i<=n;i++)cin>>p1[i];
for(i=1;i<=n;i++)cin>>p2[i];
judge(1,1,n,1);
cout<<endl;
}
return 0;
}
红尘中,能够将一个人轻轻放在心中,寂然相爱,默然相守,与我。已然是一种幸福。
好好学习,相信自己是最好的。