Description
输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。
Input
第一行输入二叉树的先序遍历序列;
第二行输入二叉树的中序遍历序列。
Output
输出该二叉树的后序遍历序列。
Sample
Input
ABDCEF
BDAECF
Output
DBEFCA
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
char data;
struct node *left,*right;
} Node;
char pre[50],in[50],post[50];
Node* Create(int prel,int prer,int inl,int inr)
{
if(prel>prer)return NULL;
Node *p;
p=(Node *)malloc(sizeof(Node));
p->data=pre[prel];
int k;
for(k=inl; k<=inr; k++)
if(in[k]==pre[prel])break;
int num=k-inl;
p->left=Create(prel+1,prel+num,inl,k-1);
p->right=Create(prel+num+1,prer,k+1,inr);
return p;
}
void postOrder(Node *p)
{
if(p==NULL)return;
postOrder(p->left);
postOrder(p->right);
printf("%c",p->data);
}
int main()
{
scanf("%s",pre);
scanf("%s",in);
int len=strlen(in);
Node *p=Create(0,len-1,0,len-1);
postOrder(p);
printf("\n");
return 0;
}