剑指offer(牛客网)-第四题-重构二叉树
剑指offer(牛客网)-第四题-重构二叉树 题目 输入某二叉树的前序遍历和中序遍历的结果,请重构出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如: 输入前序遍历序列 [ 1 , 2 , 4 , 7 , 2 , 5 , 6 , 8 ] 输入中序遍历序列 [ 4 , 7 , 2 , 1 , 5 , 3 , 8 , 6 ] 解析 前序遍历的顺序是,根左右,所以第一个数字总是树的根节点 中序遍历的顺序是,左根右,所以根节点在序列的中间,根节点左边为左子树,右边为右子树 综上所述,我们可以使用递归去完成左右子树的构造。 代码 public class solution { public TreeNode reConstructBinaryTree ( int [ ] pre , int [ ] in ) { TreeNode root = reConstructBinaryTree ( pre , 0 , pre . length - 1 , in , 0 , in . length - 1 ) ; return root ; } private TreeNode reConstructBinaryTree ( int [ ] pre , int startPre , int endPre , int [ ] in , int startIn , int endIn