package main
import . "nc_tools"
/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param inorder int整型一维数组 中序遍历序列
 * @param postorder int整型一维数组 后序遍历序列
 * @return TreeNode类
*/
func buildTree( inorder []int ,  postorder []int ) *TreeNode {
    // write code here
    if len(inorder) == 0 {
        return nil
    }
    pos := find(inorder,postorder[len(postorder)-1])


    return &TreeNode{
        Val: postorder[len(postorder)-1],
        Left: buildTree(inorder[:pos],postorder[:pos]),
        Right: buildTree(inorder[pos+1:],postorder[pos:len(postorder)-1]),
    }

}

func find(nums []int,target int) int {
    for i,num := range nums {
        if num == target {
            return i
        }
    }
    return -1
}