题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 ≤8)。
输入格式
共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式
共一行一个字符串,表示一棵二叉树的先序。
输入数据 1
BADC
BDCA
输出数据 1
ABCD
代码
#include<bits/stdc++.h>
using namespace std;
string zx, hx;
void dfs(int l1, int r1, int l2, int r2){
if(l1 > r1 || l2 > r2) return;
cout << hx[r2];
int m = zx.find(hx[r2]);
int len = m - l1;
dfs(l1,m-1, l2, l2+len-1);
dfs(m+1, r1, l2+len, r2-1);
}
int main(){
cin >> zx >> hx;
dfs(0, zx.length()-1, 0, hx.length()-1);
return 0;
}