【问题描述】 根据一棵二叉树的中序遍历序列和后序遍历序列,求这棵树的前序遍历序列。
【输入形式】 一棵树的中序遍历序列和该树后序遍历序列。输入序列中仅含有小写字母,且没有重复的字母
【输出形式】 一棵树的前序遍历序列
【样例输入】
dbeafcg
debfgca
【样例输出】
abdecfg
#include <bits/stdc++.h>
using namespace std;
char mid[200], last[200];
void build(int x, int y, int p, int q)
{
if (x > y || p > q)
return;
int t = x;
while (mid[t] != last[q])
t++;
int len = t - x;
cout << last[q];
build(x, t - 1, p, p + len - 1); // left
build(t + 1, y, p + len, q - 1); // right
}
int main()
{
cin >> mid >> last;
int size = strlen(mid) - 1;
build(0, size, 0, size);
return 0;
}