#include <cstdio>
#include <cstring>
int post[100],in[100];
void dfs(int rt,int l,int r)
{
int i;
for(i=l; i<=r&&in[i]!=post[rt]; i++);
printf("%d ",in[i]);
if(l<i) dfs(rt-r+i-1,l,i-1);//访左,rt-r+i-1,就是把下标一到左子树的位置。
if(i<r) dfs(rt-1,i+1,r);//访右
}
int main()
{
int n;scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&in[i]);
for(int j=1;j<=n;j++) scanf("%d",&post[j]);
dfs(n,1,n);
}
中后求前
最新推荐文章于 2021-09-02 22:00:06 发布