1545 - Problem D
时间限制 : 1 秒
内存限制 : 32 MB
已知某二叉树的先序序列和中序序列,编程计算并输出该二叉树的后序序列。
题目输入
有多组数据,每组分为两行输入,第一行表示指定二叉树的先序序列,第二行表示该二叉树的中序序列,序列元素均为大写英文字符,表示二叉树的结点。
题目输出
对于每组数组,在一行上输出该二叉树的后序序列。
输入/输出样例
输入格式
ABDGCEFH DGBAECHF
输出格式
GDBEHFCA
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; }
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; }