Construct Binary Tree from Inorder and Postorder Traversal

给一个in order和 post order遍历的数组, 建立一个二叉树. 这个题吧….不看答案当场写肯定挂..

public class Solution {
    private int pLength;
    public TreeNode buildTree(int[] inorder, int[] postorder) {
        int iLength = inorder.length ;
        pLength = postorder.length - 1;
        return helper(inorder, postorder, 0, iLength-1);
    }

    public TreeNode helper(int[] inorder, int[] postorder, int inStart, int inEnd){
        if (inStart > inEnd || pLength < 0) return null;
        int last = postorder[pLength--];
        TreeNode root = new TreeNode(last);
        for (int i = inStart; i<= inEnd; i++){
            if (last == inorder[i]){
                root.right = helper(inorder, postorder, i+1, inEnd);
                root.left = helper(inorder, postorder, inStart, i-1);
                break;
            }
        }
        return root;
    }
}