【letcode刷题记录】从中序与后序遍历序列构造二叉树

题目描述 

【letcode刷题记录】从中序与后序遍历序列构造二叉树

/**

 * Definition for a binary tree node.

 * public class TreeNode {

 *     int val;

 *     TreeNode left;

 *     TreeNode right;

 *     TreeNode(int x) { val = x; }

 * }

 */

class Solution {

    public TreeNode buildTree(int[] inorder, int[] postorder) {

        if(inorder.length==0|| postorder.length==0) return null;

        int index=Findindex(inorder,postorder);

        TreeNode root=new TreeNode(inorder[index]);//postorder[postorder.length-1]

        root.right=buildTree(Arrays.copyOfRange(inorder,index+1,inorder.length),Arrays.copyOfRange(postorder,index,postorder.length-1));

        root.left=buildTree(Arrays.copyOfRange(inorder,0,index),Arrays.copyOfRange(postorder,0,index));

        return root;

    }


 

    public int Findindex(int[] inorder,int[] postorder)

    {

        for(int i=0;i<inorder.length;i++)

        {

            if(inorder[i]==postorder[postorder.length-1]) return i;

        }

        return 0;

 

    }

}