题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 \le 8≤8)。
输入格式
共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式
共一行一个字符串,表示一棵二叉树的先序。
输入输出样例
输入 #1BADC 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; }
标签:string,求先序,后序,中序,二叉树,序列 From: https://www.cnblogs.com/wakeendblogs/p/17301227.html