给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 e ≤8)。
输入格式
共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式
共一行一个字符串,表示一棵二叉树的先序。
输入输出样例
输入 #1复制
BADC BDCA输出 #1复制
ABCD说明/提示
【题目来源】
NOIP 2001 普及组第三题
递归,首先根据中序和后序的规则找到首字母,即后序最后一个字母然后对应的找到中序中的字母位置,然后一分为二,再找,一直到最后一个
#include <iostream>
#include <string>
using namespace std;
string s1,s2;
void ssort(string s1,string s2){
if(s1.size()>0){
char ch=s2[s2.size()-1];
cout<<ch;
int k=s1.find(ch);
ssort(s1.substr(0,k),s2.substr(0,k));
ssort(s1.substr(k+1),s2.substr(k,s1.size()-k-1));
}
}
int main(){
cin>>s1>>s2;
ssort(s1,s2);
cout<<endl;
}