题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度\le 8≤8)。
输入输出格式
输入格式:
22行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式:
11行,表示一棵二叉树的先序。
输入输出样例
输入样例#1: 复制
BADC BDCA
输出样例#1: 复制
ABCD
#include<iostream>
#include<vector>
#include<climits>
#include<stack>
#include<string>
#include<algorithm>
using namespace std;
typedef struct N
{
char p;
struct N* leftNode;
struct N* rightNode;
N(char s) :p(s),leftNode(NULL),rightNode(NULL) {}
} TreeNode;
int res[1025][1025];
void fun(string s1, string s2)
{
if (s1.size() <= 0)
return;
if (s1.size() == 1)
{
cout << s1[0];
return;
}
int len2 = s2.size();
int i;
for ( i = 0; i < s1.size(); i++)
{
if (s1[i] == s2[len2 - 1])
break;
}
int len1 = s1.size();
cout << s2[len2 - 1];
string s3 = s1.substr(0, i);
string s4 = s1.substr(i + 1);
string s5 = s2.substr(0, i);
string s6 = s2.substr(i, len1 - i - 1);
fun(s3, s5);
fun(s4, s6);
}
int main()
{
string s1, s2;
cin >> s1 >> s2;
fun(s1, s2);
return 0;
}