#include<cstdio> #include<cstring> using namespace std; /*根据二叉树的先序遍历和中序遍历求后序遍历 *利用先序是根->左->右,而中序是左->根->右 *找出根的位置,划分左右子树,在递归求解 */ char pre[35],in[35]; void print_Btree(int len,char *pre,char *in) { if(len<=0) return; int pos = strchr(in,pre[0])-in; print_Btree(pos,pre+1,in); print_Btree(len-pos-1,pre+pos+1,in+pos+1); printf("%c",pre[0]); } int main() { int len; while(~scanf("%s %s",pre,in)) { len = strlen(pre); print_Btree(len,pre,in); printf("\n"); memset(pre,0,sizeof(pre)); memset(in,0,sizeof(in)); } return 0; }