描述
给定一棵二叉树的前序遍历和中序遍历的结果,求其后序遍历。
输入
输入可能有多组,以EOF结束。
每组输入包含两个字符串,分别为树的前序遍历和中序遍历。每个字符串中只包含大写字母且互不重复。
输出
对于每组输入,用一行来输出它后序遍历结果。
样例输入
DBACEGF ABCDEFG
BCAD CBAD
样例输出
ACBFGED
CDAB
递归,先找中序遍历中的根节点,将先序遍历和中序遍历都分隔成左子树和右子树,递归求解。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct TreeNode
{
char val;
TreeNode *left;
TreeNode *right;
};
char str1[30], str2[30];//存放先序遍历和中序遍历
TreeNode *creatTree(TreeNode* p)
{
p = (TreeNode*)malloc(sizeof(TreeNode));
p->left = NULL;
p->right = NULL;
return p;
}
void removeTree(TreeNode *p)
{
if (p == NULL)
{
return;
}
removeTree(p->left);
removeTree(p->right);
free(p);
}
//后序遍历二叉树
void postOrde