题目
已知二叉树前序为 ABDFGCEH 后序序列为 BFDGACEH ,要求输出后序遍历为 FGDBHECA
大体思路
又先序得出根,先序的根后为左树一部分,我们再在中序序列里找到先序的根,此处之前即为左树(可以画图好好理解下),此处之后为右树。然后就是不断递归即可。
代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100
typedef struct Node{
char data;
struct Node *Lchild;
struct Node *Rchild;
}BiTNode,*Bitree;
void PreTree(Bitree T) //后序输出树
{ if(T==NULL) return;
PreTree(T->Lchild);
PreTree(T->Rchild);
printf("%c",T->data);
}
char pre[MAX];
char mid[MAX];
int MidFind(int left,int right,char MID)
{
for(int i=left;i<=right;i++)
{
if(mid[i]==MID) return i;
}
return 0;
}
void Create(int left,int right,int *i,Bi