public TreeNode buildTree_lint(int[] inorder, int[] postorder) {
        if (postorder == null || postorder.length == 0 || inorder == null || inorder.length == 0 || inorder.length != postorder.length)
            return null;
        // value -> index of the value
        HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
        for (int i = 0; i < inorder.length; ++i) {
            hashMap.put(inorder[i], i);
        }
        return builder(hashMap, postorder, 0, postorder.length - 1, 0, inorder.length - 1);
    }