/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */这不是我自己写出来的,看了别人的方法,然后理解 了
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param inorder int整型一维数组 中序遍历序列
 * @param inorderLen int inorder数组长度
 * @param postorder int整型一维数组 后序遍历序列
 * @param postorderLen int postorder数组长度
 * @return TreeNode类
 */
struct TreeNode* buildTree(int* inorder, int inorderLen, int* postorder, int postorderLen ) {
    // write code here
struct TreeNode* p;
int index = 0;
if(inorderLen == 0){return NULL;}
while(inorder[index]!=postorder[inorderLen-1]){
    //最后一个
    index++;
    // 如果给的正确不会出现找不到的情况
}
p = malloc(sizeof(struct TreeNode));
p->val = inorder[index];
p->left = buildTree(inorder, index, postorder, postorderLen);
// 因为长度一致,中序= x个左子树 + root+y个右子树  ,后序= x个左子树 + y个右子树 + root;
// 所以找postorder [index -1]
p->right = buildTree(inorder+index+1, inorderLen -index-1, postorder+index, postorderLen-index-1) ;
return p;
}