1545 - Problem D
已知某二叉树的先序序列和中序序列,编程计算并输出该二叉树的后序序列。
Input
有多组数据,每组分为两行输入,第一行表示指定二叉树的先序序列,第二行表示该二叉树的中序序列,序列元素均为大写英文字符,表示二叉树的结点。
Output
对于每组数组,在一行上输出该二叉树的后序序列。
Examples
Input
ABDGCEFH DGBAECHF
Output
GDBEHFCA
Solution C
#include<stdio.h> #include<string.h> char s1[32],s2[32]; void cal(int a1,int a2,int len) { if(len<=0)return; int i; for(i=0;i<len&&s2[a2+i]!=s1[a1];i++); cal(a1+1,a2,i); cal(a1+i+1,a2+i+1,len-i-1); putchar(s1[a1]); } int main() { int n; while(scanf("%s %s",&s1,&s2)!=EOF) { n = strlen(s1); cal(0,0,n); puts(""); } return 0; }
Solution C++
#include<stdio.h> #include<string.h> char s1[32],s2[32]; void cal(int a1,int a2,int len) { if (len<=0) return ; int i; for(i=0;i<len && s2[a2+i]!=s1[a1];i++); cal(a1+1,a2,i); cal(a1+i+1,a2+i+1,len-i-1); putchar(s1[a1]); } int main() { int n; while(scanf("%s %s",s1,s2)!=EOF) { n=strlen(s1); cal(0,0,n); puts(""); } return 0; }