考点:二叉树
(一)
题目描述:
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
分析:
二叉树有如下几种遍历方式:
前(先)序遍历:先访问根结点,再前序遍历左子树,最后前序遍历右子树。(根>左子树>右子树)
中序遍历:先中序遍历左子树,再访问根结点,最后中序遍历右子树。(左子树>根>右子树)
后序遍历:先后序遍历左子树和右子树,最后访问根结点。(左子树>右子树>根)
层次遍历:从上到下、从左到右访问各个节点(不常用)
前序遍历中,第一个数总是树的根结点的值。在中序遍历中,根结点的值在序列的中间,两侧为左、右子树。我们可以递归来实现。
实现: