算法训练 求先序排列

来源:互联网 发布:chart.js 更新数据 编辑:程序博客网 时间:2024/05/16 12:46
问题描述
  给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入格式
  两行,每行一个字符串,分别表示中序和后序排列
输出格式
  一个字符串,表示所求先序排列

  样例输入
  BADC
  BDCA
样例输出
ABCD

#include<stdio.h>#include<string.h>#define MAX 10char mid[MAX];char later[MAX];int tree(int start1,int end1,int start2,int end2){int i;char temp=later[end2];if(start1>end1 || start2>end2){return 0;}else{printf("%c",temp);for(i=start1;i<=end1;i++){if(temp==mid[i]){/*printf("左边:%d--%d   %d--%d\n",start1,i-1,start2,start2+(i-1-start1));for(int j=start1;j<=i-1;j++){printf("%c",mid[j]);}printf("\n");for(int j=start2;j<=start2+(i-1-start1);j++){printf("%c",later[j]);}printf("\n");printf("右边:%d--%d   %d--%d\n",i+1,end1,start2+(i-1-start1)+1,end2-1);for(int j=i+1;j<=end1;j++){printf("%c",mid[j]);}printf("\n");for(int j=start2+(i-1-start1)+1;j<=end2-1;j++){printf("%c",later[j]);}printf("\n");*/tree(start1,i-1,start2,start2+(i-1-start1));tree(i+1,end1,start2+(i-1-start1)+1,end2-1);return 0;}}}}int main(){int len;scanf("%s%s",mid,later);len=strlen(mid);tree(0,len-1,0,len-1);return 0;}



1 0
原创粉丝点击