poj 2255
题意:给出一棵二叉树的前序遍历和中序遍历,输出这棵树的后序遍历。
代码:
#include<iostream>
#include<fstream>
using namespace std;
int n;
char c1[30],c2[30];
struct e{
char c;
e *left,*right;
};
e * solve(int p,int q,int s){
int i;
e *f=new e;
for(i=q;i<=s;i++)
if(c2[i]==c1[p])
break;
f->c=c1[p];
if(i==q)
f->left=NULL;
else
f->left=solve(p+1,q,i-1);
if(i==s)
f->right=NULL;
else
f->right=solve(i+1-q+p,i+1,s);
return f;
}
void print(e *p){
if(p!=NULL)
{
print(p->left);
print(p->right);
cout<<p->c;
}
}
void read(){
// ifstream cin("in.txt");
int i,j,k;
while(cin>>c1>>c2){
e *p=solve(0,0,strlen(c1)-1);
print(p);
cout<<endl;
}
}
int main(){
read();
return 0;
}
浙公网安备 33010602011771号