#include<iostream>
#include<malloc.h>
#define error 0
#define ok 1
using namespace std;/* 中序必须已知
A B C D E G F
C B E G D F A
C G E F D B A
*/
typedef struct BiTNode{char data;
BiTNode *lchild,*rchild;}BiTNode,*BiTree;voidotherTraverse(string in,string pre,int i,int j,int len){if(len==0)return;char c=pre[j];int len2=0;for(len2;len2<len;len2++){if(in[i+len2]==pre[j]){break;}}otherTraverse(in,pre,i,j+1,len2);otherTraverse(in,pre,i+len2+1,j+len2+1,len-(len2+1));
cout<<c;return;}intmain(){
string in,pre;
cin>>pre>>in;otherTraverse(in,pre,0,0,pre.length());
cout<<endl;return0;}
(2)给出中、后序,求前序
#include<iostream>
#include<malloc.h>
#define error 0
#define ok 1
using namespace std;/*
A B C D E G F
C B E G D F A
C G E F D B A
*/
typedef struct BiTNode{char data;
BiTNode *lchild,*rchild;}BiTNode,*BiTree;voidotherTraverse(string in,string post,int i,int len1,int j,int len2){if(i>len1)return;char c=post[len2];int inw=i;for(inw;inw<=len1;inw++){if(in[inw]==post[len2]){break;}}
cout<<c;if(len2==0)return;otherTraverse(in,post,i,inw-1,j,j+inw-1-i);otherTraverse(in,post,inw+1,len1,inw,len2-1);return;}intmain(){
string in,post;
cin>>post>>in;int len=post.length();otherTraverse(in,post,0,len-1,0,len-1);
cout<<endl;return0;}/*
CGEFDBA
CBEGDFA
*/