题目描述
输入
第1行:二叉树的前序遍历顺序第2行:中序遍历顺序
输出
二叉树的后序遍历顺序
样例输入
Copy (如果复制到控制台无换行,可以先粘贴到文本编辑器,再复制)
ABCDEFGH
CBEDAGHF
样例输出
输入
第1行:二叉树的前序遍历顺序第2行:中序遍历顺序
输出
二叉树的后序遍历顺序
样例输入
Copy (如果复制到控制台无换行,可以先粘贴到文本编辑器,再复制)
ABCDEFGH
CBEDAGHF
样例输出
CEDBHGFA
-------------------------------------------------------------------------------------
估计有很多人最开始都以为只用先序遍历的信息,就可以获取树的结构。但,如果只用先序遍历的信息,将会有很多种不同的树。
所以说,这样是不行的。
其实,仔细想一想,便可以发现,我们可以通过先序,获取整棵树的根节点,再在中序中找到它。这样,整个序列就被分为了两部分,也就是原树的左子树和右子树。
至此,便可以用递归求解了。
-----------------------------------------------------------------------------------------
看到这里,估计大家的第一想法就是建树。其实,这里没有必要建树。在获取(子)树的根节点后,就可以将左子树和右子树的后序遍历递归打印出来,最好打印根节点就行了。
这样一来,省掉了建树的时间以及储存这棵树的内存空,一举两得。