题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度≤8)。
输入格式
2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式
1行,表示一棵二叉树的先序。
输入输出样例
输入 #1
BADC
BDCA
输出 #1
ABCD
先序后续的概念:
首先要知道的是,有前序(后序)和中序可以求后序(前序),但是只有前序和后序是不能求得中序的
前序:1,2,4,5,3
中序:4,2,5,1,3
后序:4,5,2,3,1
代码:
#include<iostream>
#include<cstring>
using namespace std;
void beford(string in,string after){
if (in.size()>0){
char ch =after[after.size()-1];
cout<<ch;
int k =in.find(ch);
beford(in.substr(0,k),after.substr(0,k));//递归左子树
beford(in.substr(k+1),after.substr(k,in.size()-k-1));//递归右子树
}
}
int main(){
string inord,aftord;
cin>>inord;
cin>>aftord;
beford(inord,aftord);
cout<<endl;
}