题目
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入格式:
每个测试文件只包含一组测试数据,每组输入包含两行,第一行输入一个字符串表示二叉树的中序排列,第二行输入一个字符串表示二叉树的后序排列。
输出格式:
对于每组输入数据,输出二叉树的先序排列。
限制:
空间限制:125MByte 时间限制:1秒
样例:
输入: BADC BDCA
输出: ABCD
看到题目,我们首先要了解怎么用中序和后序求先序。
第一,后序遍历方式是左子树 >> 右子树 >> 根结点。所以后序排列的最后一个结点就是根结点。
第二,中序遍历方式是左子树 >> 根结点 >> 右子树。所以在找到根结点后可以将中序排列分成俩部分,一部分左子树,一部分右子树。
第三,可以根据中序中分的左右子树的位置和长度确定在后序排列中对应的左右子树的位置和长度。
参考上图理解,这样,我们就可以将一个中序和后序分成两组性质相同,规模更小的