#include <stdio.h>
#include <stdlib.h>
typedef struct k
{
int data;
struct k *lc,*rc;
}Btree;
void inputin(int in[],int n)
{
int i;
for(i=0;i<n;i++)
scanf("%d",&in[i]);
}
void inputpost(int post[],int n)
{
int i;
for(i=0;i<n;i++)
scanf("%d",&post[i]);
}
Btree *creatBtree()
{
Btree *t;
int num;
scanf("%d",&num);
if(num==-1)
{
return NULL;
}
t=(Btree *)malloc(sizeof(Btree));
t->data=num;
t->lc=creatBtree();
t->rc=creatBtree();
return t;
}
int finde(int in[],int l,int h,int e)
{
int i;
for(i=l;i<=h;i++)
{
if(in[i]==e)
return i;
}
}
Btree *ctree(int in[],int L1,int H1,int post[],int L2,int H2)
{
Btree *t;
int i,j;
if(L1>H1)
return NULL;
t=(Btree *)malloc(sizeof(Btree));
t->data=post[H2];
i=finde(in,L1,H1,t->data);
j=L2+(i-L1);
t->lc=ctree(in,L1,i-1,post,L2,j-1);
t->rc=ctree(in,i+1,H1,post,j,H2-1);
return t;
}
void posprint(Btree *t)
{
if(t==NULL)
return ;
printf("%d ",t->data);
posprint(t->lc);
posprint(t->rc);
}
//4 2 5 1 6 3 7中序输入
//4 5 2 6 7 3 1后序输入
int main()
{
int in[10];
int post[10];
inputin(&in,7);
inputpost(&post,7);
Btree *t;
t=ctree(in,0,6,post,0,6);
posprint(t);
return 0;
}