#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN sizeof(struct node)
typedef struct node{
char data;
struct node* lchild,*rchild;
}node ,*BT;
BT CreatBT(char* pre,int fp,int rp,char* in,int fi,int ri)
{
int m=fi;
BT T=(BT)malloc(LEN);
if((rp-fp)!=(ri-fi))
{
printf("Error sequence!\n");
exit(0);
}
if(rp-fp<0)
{
T=NULL;
return T;
}
while((pre[fp])!=in[m])m++;
if(m>ri)
{
printf("Error sequence!\n");
exit(0);
}
T->data=in[m];
T->lchild=CreatBT(pre,fp+1,fp+m-fi,in,fi,m-1);
T->rchild=CreatBT(pre,fp+m-fi+1,rp,in,m+1,ri);
return T;
}
void Postordertraverse(BT T)
{
if(!T)return;
Postordertraverse(T->lchild);
Postordertraverse(T->rchild);
printf("%c ",T->data);
}
void main()
{
char pre[]="-+a*bwcd/ef";
char in[]="a+b*cwd-e/f";
//char pre[30];
//char in[30];
BT T=(BT)malloc(LEN);
/*printf("please input the Preorder sequence:\n");
gets(pre);
printf("please input the Inorder sequence:\n");
gets(in);*/
T=CreatBT(pre,0,strlen(pre)-1,in,0,strlen(in)-1);
printf("Postordertraverse the BTree:\n");
Postordertraverse(T);
}
已知二叉树的前序和中序序列,要求写出后序 ,如果给的前序和中序序列是错误的,就要输出"NO ANSWER!"
最新推荐文章于 2022-05-19 20:52:00 发布