题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度≤8)。
输入格式
2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式
1行,表示一棵二叉树的先序。
输入输出样例
#include <bits/stdc++.h>
using namespace std;
char s1[21], s2[21];
void dfs(int x1, int y1, int x2, int y2){
if(x1 > y1){
return;
}
int p;
for(int i = x1; i <= y1; ++i){
if(s1[i] == s2[y2]){
p = i;
break;
}
}
cout << s1[p];
dfs(x1, p - 1, x2, x2 + p - 1 - x1);
dfs(p + 1, y1, y2 - y1 + p, y2 - 1);
}
int main(){
int len;
cin >> s1 >> s2;
len = strlen(s1);
dfs(0, len - 1, 0, len - 1);
return 0;
}