#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
typedef char TElemType;
typedef struct BiTnode{
TElemType data;
struct BiTnode *lchild;
struct BiTnode *rchild;
}BiTNode;
BiTNode* Build(int length,TElemType *In,TElemType *Post);
void PreOrder(BiTNode *T);
int main()
{
TElemType In[MAX_SIZE];
scanf("%s",In);
TElemType Post[MAX_SIZE];
scanf("%s",Post);
int length=strlen(Post);
//printf("%d\n",length);
BiTNode *T=(BiTNode *)malloc(sizeof(BiTNode));
if(!T){
printf("OVERFLOW");
exit(0);
}
T=Build(length,In,Post);
PreOrder(T);
return 0;
}
BiTNode* Build(int length,TElemType *In,TElemType *Post){
int i=0;
BiTNode *T=(BiTNode *)malloc(sizeof(BiTNode));
if(!T){
printf("OVERFLOW");
exit(0);
}
//printf("%d\n",length);
if(!length){
return NULL;
}
T->data=Post[length-1];
T->lchild=NULL;
T->rchild=NULL;
while(Post[length-1]!=In[i]){
i++;
}
T->lchild=Build(i,In,Post);
T->rchild=Build(length-i-1,In+i+1,Post+i);
return T;
}
void PreOrder(BiTNode *T){
if(T){
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
已知一个二叉树的中序遍历序列和后序遍历序列,求这棵树的前序遍历序列
最新推荐文章于 2022-07-19 14:11:37 发布