3021: 【普及-】【P1030】求先序排列

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:3 解决:2

题目描述

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 lns="http://www.w3.org/1998/Math/MathML">8)。

输入

共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。

输出

共一行一个字符串,表示一棵二叉树的先序。

样例输入 复制

BADC
BDCA

样例输出 复制

ABCD

提示

#include<bits/stdc++.h>
using namespace std;
void dfs(string s1, string s2) {
	char root=s2[s2.size()-1];
	int l = s1.find(root),r = s1.size() - l - 1;
	cout << root;
	if(l){
		string s1_l = s1.substr(0,l), s2_l=s2.substr(0,l);
		dfs(s1_l,s2_l);
	}
	if(r){
		string s1_r=s1.substr(l+1,r), s2_r=s2.substr(l,r);
		dfs(s1_r,s2_r);
	}
	
}
int main(){
    string s1,s2;
    cin>>s1>>s2;
    dfs(s1,s2);
	return 0;
}