问题描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入格式
两行,每行一个字符串,分别表示中序和后序排列
输出格式
一个字符串,表示所求先序排列
样例输入
BADC
BDCA
样例输出
ABCD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> #include <string> using namespace std; string in, post, ans = ""; void pre(int root, int l, int r) { if (l > r) return; int i = r; while (post[root] == in[i]) i--; ans += post[i]; pre(root - 1 + i - l, l, i - 1); pre(root - 1, i + 1, r); } int main() { cin >> in >> post; pre(post.length() - 1, 0, in.length() - 1); cout << ans; return 0; } |
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼