求先序序列
题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 \le 8≤8)。
输入格式
共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式
共一行一个字符串,表示一棵二叉树的先序。
输入输出样例
输入 #1
BADC BDCA
输出 #1
ABCD
#include<iostream>
#include<string>
using namespace std;
string a, b;
void dfs(string a, string b)//求先序序列
{
if (a.length() > 0)
{
char c = b[b.length() - 1];
cout << c;//打印先序序列
int k = a.find(c);//在中序序列中找到根结点,即后序序列最后一个字符
dfs(a.substr(0, k), b.substr(0, k));//从0开始截取k个字符包括0
dfs(a.substr(k + 1), b.substr(k, b.length() - 1 - k));//第k+1个字符之和,包括第k+1
}
}
int main()
{
cin >> a >> b;
dfs(a, b);//a 中序序列 b 后序序列
return 0;
}
浙公网安备 33010602011771号