重建二叉树
重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 遍历方式 前序遍历:根->左子树->右子树 中序遍历:左子树-> 根 -> 右子树 后序遍历:左子树 —> 右子树 —> 根结点 层次遍历:按层次遍历 重建二叉树 中序+其他任意一种遍历==唯一二叉树 解题思路 递归 /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ 1.找到根结点 前序遍历 第一个节点为根节点, 后序遍历 最后一个点为根节点。 题目中根节点为1 2.确定左右子树 中序遍历中找到根节点的位置,根节点左边为左子树(4,7,2),右边的为右子树(5,3,8,6) 3.递归 左右子树分别看作一个新的树,对应新的前序和中序遍历序列(怎么确定新的遍历序列看接下来的代码),进行递归求解。 public class Solution { public TreeNode