剑指Offer:重构二叉树(7)

题目描述:

根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。

解题思路:

前序遍历的第一个节点为根节点,再用这个根节点在中序遍历中将其分为前后两部分,然后再依次递归;

 1 import java.util.Arrays;
 2 public class Solution {
 3     public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
 4         if(pre.length==0||in.length==0){
 5             return null;
 6         }
 7         
 8         TreeNode root = new TreeNode(pre[0]);
 9         for(int i=0;i<in.length;i++){
10             if(in[i]==pre[0]){
11                 root.left=reConstructBinaryTree(Arrays.copyOfRange(pre,1,i+1),Arrays.copyOfRange(in,0,i));
12                 root.right=reConstructBinaryTree(Arrays.copyOfRange(pre,i+1,pre.length),Arrays.copyOfRange(in,i+1,in.length));
13                 break;
14             }
15         }
16         return root;
17     }
18 }

原文地址:https://www.cnblogs.com/lkylin/p/13473853.html