#include<bits/stdc++.h>
using namespace std;
char s1[10];
char s2[10];
int len;
int find(char a){
for (int i = 0;i < len;i++){
if (s1[i] == a){
return i;
}
}
}
void dfs(int l1,int r1,int l2,int r2){
int m = find(s2[r2]);
cout << s2[r2];
if (m > l1){
dfs(l1,m-1,l2,r2-r1+m-1);
}
if (m < r1){
dfs(m+1,r1,l2+m-l1,r2-1);
}
}
int main()
{
cin >> s1;
getchar();
cin >> s2;
getchar();
len = strlen(s1);
dfs(0,len-1,0,len-1);
return 0;
}
[NOIP2001 普及组] 求先序排列
题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 $ \le 8$)。
输入格式
共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式
共一行一个字符串,表示一棵二叉树的先序。
样例 #1
样例输入 #1
BADC
BDCA
样例输出 #1
ABCD
提示
【题目来源】
NOIP 2001 普及组第三题