题目描述
有一棵二叉树,结点数量不超过 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;
}