题目描述
有一棵二叉树,结点数量不超过 2626 个,树上的每个结点都有一个大写字母。
给定这棵二叉树的前序遍历及中序遍历,请输出它的后序遍历。
输入格式
- 第一行:一个字符串,表示二叉树的前序遍历;
- 第二行:一个字符串,表示二叉树的中序遍历。
输出格式
- 单独一行:一个字符串,表示二叉树的后序遍历。
数据范围
设输入的字符串长度为 𝑛n,
- 对于 50%50% 的数据,1≤𝑛≤101≤n≤10
- 对于 100%100% 的数据,1≤𝑛≤261≤n≤26
样例数据
输入:
ACE
CAE
输出:
CEA
详见代码:
#include <bits/stdc++.h>
using namespace std;
string q, z;
void dfs(int ql, int zl, int len)
{
int i;
int lenz, leny;
for (i = 0; i < len; i++)
{
if(q[ql] == z[zl + i]) break;
}
lenz = i;
leny = len - i - 1;
if (lenz > 0)
dfs(ql + 1, zl, lenz);
if (leny > 0)
dfs(ql + 1 + lenz, zl + 1 + lenz, leny);
cout << q[ql];
return;
}
int main()
{
int len;
cin >> q >> z;
len = q.length();
dfs(0, 0, len);
return 0;
}