Leetcode———重建二叉树

  public TreeNode buildTree(int[] preorder, int[] inorder) {
       return helper(preorder,inorder,0,preorder.length-1,0,inorder.length-1);

    }

    public TreeNode helper(int[] preorder, int[] inorder, int pstart   , int  pend , int istart , int iend)
    {

            if(pstart > pend)
            {
                return null;
            }
            TreeNode root = new TreeNode(preorder[pstart]);
            int index = 0;
            while(inorder[index] != root.val)
            {
                index++;
            }
            root.left = helper(preorder,inorder,pstart+1,pstart+index - istart,istart,index-1);
            root.right = helper(preorder,inorder,pstart+index -istart +1,pend,index+1,iend);

            return root;
    }
原文地址:https://www.cnblogs.com/swqblog/p/13148699.html