给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度\le 8≤8)。
输入输出格式
输入格式:
22行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式:
11行,表示一棵二叉树的先序。
输入输出样例
输入样例#1: 复制
BADC
BDCA
输出样例#1: 复制
ABCD
方法:
模板概括为step1:找到根并输出
step2:将中序,后序各分为左右两棵子树;
step3:递归,重复step1,2;
// 中 左根右 BADC ACGDBHZKX
//后 左右根 BDCA CDGAHXKZB
#include<bits/stdc++.h>
using namespace std;
void ford(string a,string b)
{
if(a.size()>0){
char c=b[b.size()-1];
cout<<c;
int k=a.find(c);
ford(a.substr(0,k),b.substr(0,k));
ford(a.substr(k+1),b.substr(k,a.size()-k-1));
}
}
int main()
{
string a,b;
cin>>a>>b;
ford(a,b);
cout<<endl;
return 0;
}
//关于substr函数:
1.substr(a,b) 从a位置(包括a)开始复制b个字符
2.substr(a) 从a位置开始复制到最好位置