您的位置:首页 > 其它

通过输入二叉树先序遍历和中序遍历,输出其后序遍历

2018-01-06 19:31 330 查看

题目:通过输入二叉树先序遍历和中序遍历,输出其后序遍历

输入样例:FDXEAG
    XDEFAG
输出样例:XEDGAF

实现代码:
#include <stdio.h>
#include <string.h>
struct Node{
Node *lchild;
Node *rchild;
char c;
}Tree[50];
int loc;
Node *create(){
Tree[loc].lchild=Tree[loc].rchild=NULL;
return &Tree[loc++];
}
char str1[30],str2[30];
void PostOrder(Node *node){
if(node->lchild!=NULL){
PostOrder(node->lchild);
}
if(node->rchild!=NULL){
PostOrder(node->rchild);
}
printf("%c",node->c);
}
Node *Build(int s1,int e1,int s2,int e2){
Node *T=create();
int rootIDx=0;
T->c=str1[s1];
for(int i=s2;i<=e2;i++){
if(str1[s1]==str2[i]){
rootIDx=i;
break;
}
}
if(rootIDx!=s2){
T->lchild=Build(s1+1,s1+(rootIDx-s2),s2,rootIDx-1);
}
if(rootIDx!=e2){
T->rchild=Build(s1+(rootIDx-s2)+1,e1,1+rootIDx,e2);
}
return T;
}
int main(){
while(scanf("%s",str1)!=EOF){
scanf("%s",str2);
int L1=strlen(str1);
int L2=strlen(str2);
loc=0;
Node *N=Build(0,L1-1,0,L2-1);
PostOrder(N);
printf("\n");
}
return 0;
}
测试输出:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐