来源:POJ2255
前序中序求后序,递归就好
代码:
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdlib>
using namespace std;
char in[30];
char pre[30];
char post[30];
void solve(int pl,int pr,int il,int ir){
char s=pre[pl];
int k=-1;
while(in[++k]!=s);
if(il<k){
solve(pl+1,pl+k-il,il,k-1);
}
if(ir>k){
solve(pl+k-il+1,pr,k+1,ir);
}
cout<<s;
}
int main(){
while(scanf("%s%s",pre,in)!=EOF){
int len=strlen(pre);
solve(0,len-1,0,len-1);
cout<<endl;
memset(pre,0,sizeof(pre));
memset(in,0,sizeof(in));
}
return 0;
}