跳转至

LC105 - 从前序和中序遍历序列构造二叉树

ConstructBinaryTree.go
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
}