//【问题描述】 根据一棵二叉树的中序遍历序列和后序遍历序列,求这棵树的前序遍历序列。
//【输入形式】 一棵树的中序遍历序列和该树后序遍历序列。输入序列中仅含有小写字母,且没有重复的字母
//【输出形式】 一棵树的前序遍历序列
//【样例输入】
//dbeafcg
//debfgca
//【样例输出】
//abdecfg
#include<iostream>
using namespace std;
#include<stdlib.h>
#include<cstring>
typedef struct Node
{
char data;
struct Node*LChild;
struct Node*RChild;
}BiTNode,*BiTree;
BiTree CreateTree(char in[],char post[],int length)
{
if(length==0)
return NULL;
char root=post[length-1];
int i;
for(i=0;i<length;i++)
{
if(in[i]==root)
break;
}
int leftlength=i;
int rightlength=length-i-1;
BiTree T;
T=(BiTree)malloc(sizeof(BiTree));
T->data=root;
T->LChild=NULL;
T->RChild=NULL;
T->LChild=CreateTree(&in[0],&post[0],leftlength);
T->RChild=CreateTree(&in[i+1],&post[i],rightlength);
return T;
}
根据中序序列和后序序列建立二叉树
于 2023-05-23 16:33:00 首次发布