由二叉树的前序遍历结果和中序遍历结果来推导后序的遍历结果。
题目描述
有一棵二叉树,每个节点由一个大写字母标识(最多26个节点)。现有两组字母,分别表示前序遍历(父节点->左孩子->右孩子)和中序遍历(左孩子->父节点->右孩子)的结果,请你输出后序遍历(左孩子->右孩子->父节点)的结果。
输入
每个输入文件包含两串字母,各占一行。(每串只包含大写字母)
第一行字母表示前序遍历结果,第二行字母表示中序遍历结果。
输出
输出仅一行,表示后序遍历的结果,结尾换行。
样例
输入样例 1
DBACEGF
ABCDEFG
输出样例 1
ACBFGED
解题思路:
根据二叉树的特点,前序遍历:根左右,中序遍历:左根右,后序遍历:左右根,由根的位置来决定前中后的情况;
通过前序确定根节点,通过根节点在中序里面分开左右子树,依次这样不停的分左右,来构建一颗二叉树,从完成树的生成,而求后序结果,只需要递归一下左右根即可实现。
代码实现:
#include <iostream>
#include <string>
using namespace std;
struct Nod