题目地址:http://ac.jobdu.com/problem.php?cid=1040&pid=31
C语言源码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct BiTree
{
char data;
BiTree *lchild,*rchild;
}BiTree;
BiTree *create(char a[],char b[],int m,int n,int p,int q)
{
int i;
BiTree *t;
i=p;
while(b[i]!=a[m])
i++;
t=(BiTree *)malloc(sizeof(BiTree));
t->data=a[m];
if(i==p)
t->lchild=NULL;
else
t->lchild=create(a,b,m+1,m+i-p,p,i-1);
if(i==q)
t->rchild=NULL;
else
t->rchild=create(a,b,m+i-p+1,n,i+1,q);
return t;
}
void Post(BiTree *t)
{
if(t)
{
Post(t->lchild);
Post(t->rchild);
printf("%c",t->data);
}
}
int main()
{
char pre[30],mid[30];
BiTree *t;
while(scanf("%s",pre)!=EOF)
{
getchar();
scanf("%s",mid);
getchar();
t=create(pre,mid,0,(int)strlen(pre)-1,0,(int)strlen(pre)-1);
Post(t);
printf("\n");
}
}