#include<stdio.h> #include<stdlib.h> #include<string.h> #define SIZE 100 typedef char ElemType; //声明二叉树结构体 typedef struct node { ElemType data; struct node *lchild,*rchild; }BitTree; BitTree *createBinTreeByPostIn(char *post,char *in,int number) { if(number==0) return NULL; char c = post[number-1]; int i = 0; while(in[i]!=c && i < number)i++; int leftNumber = i; int rightNumber = number - i - 1; BitTree *node = (BitTree *)malloc(sizeof(BitTree)); node->data = c; node->lchild = createBinTreeByPostIn(&post[0],&in[0],leftNumber); node->rchild = createBinTreeByPostIn(&post[leftNumber],&in[i+1],rightNumber); return node; } void PreOrder(BitTree *bt) { if(bt!=NULL) { printf("%c ",bt->data); PreOrder(bt->lchild); PreOrder(bt->rchild); } } int main(int argc,char **argv) { char a[SIZE],b[SIZE]; BitTree *p; while(scanf("%s%s",a,b)!=EOF) { p = createBinTreeByPostIn(a,b,strlen(a)); PreOrder(p); printf("\n"); } return 0; }