资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给出一棵二叉树的中序与后序排列,求出它的先序排序(约定树结点用不同的大写字母表示,长度<=200)。
输入格式
第1行为二叉树的中序遍历结果,第2行为二叉树的后序遍历结果
输出格式
1行,为二叉树的先序遍历结果
样例输入
BADC
BDCA
样例输出
ABCD
代码
#include <iostream>
#include <string>
using namespace std;
string mod, last;
void dfs(string a, string b) {
if (a.length() == 0) return;
if (a.length() == 1) {
cout << a;
return;
}
string c = b.substr(b.length() - 1, 1);
cout << c;
dfs(a.substr(0, a.find(c)), b.substr(0, a.find(c)));
int n = a.length() - a.find(c) - 1;
dfs(a.substr(a.find(c) + 1), b.substr(a.find(c), n));
}
int main() {
cin >> mod >> last;
dfs(mod, last);
return 0;
}