package BinaryTree
func buildTree(preorder []int, inorder []int) *TreeNode {
if len(preorder) == 0 {
return nil
}
root := new(TreeNode)
root.Val = preorder[0]
pos := linearSearch(inorder, root.Val)
root.Left = buildTree(preorder[1:pos+1], inorder[:pos])
root.Right = buildTree(preorder[pos+1:], inorder[pos+1:])
return root
}
func linearSearch(arr []int, val int) int {
for i := 0; i < len(arr); i++ {
if arr[i] == val {
return i
}
}
return -1
}