well,it took me two days to solve it.
share some useful files here.
点击打开链接→just open it.
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct node
{
char data;
struct node *L_Kid;
struct node *R_Kid;
}Tree;
Tree *Create(char *post,char *in,int n)
{
Tree *root;
if(n<=0) return NULL;
root=new Tree();
root->data=*(post+n-1);//后序遍历的最后一位就是根节点;
char *i;
for(i=in;i<in+n;i++)
{
if(*i==root->data) break;
}
int k=i-in;//k控制中序遍历里数据的位置;
root->L_Kid=Create(post,in,k);//遍历左子树
root->R_Kid=Create(post+k,i+1,n-k-1);//遍历右子树;
return root;
}
void Traverse(Tree *T)
{
if(T!=NULL)
{
cout<<T->data;
Traverse(T->L_Kid);
Traverse(T->R_Kid);
}
}
int main()
{
char post[1005],in[1005];
cin>>in>>post;
int len=strlen(post);
Tree *root=Create(post,in,len);
Traverse(root);
return 0;
}