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;
}

posted on 2011-05-14 17:33  宇宙吾心  阅读(559)  评论(0)    收藏  举报

导航