美文网首页Leetcodeleetcode
105. Construct Binary Tree from

105. Construct Binary Tree from

作者: AnakinSun | 来源:发表于2019-03-26 12:17 被阅读3次

    根据前序和中序遍历结果,构建二叉树
    前序遍历的第一个节点,是数的根节点
    从中序序列中找到根节点,则左边的都是左子树,右边的都是右子树
    然后递归处理

    type TreeNode struct {
        Val   int
        Left  *TreeNode
        Right *TreeNode
    }
    
    func buildTree(preorder []int, inorder []int) *TreeNode {
        if len(preorder) == 0 {
            return nil
        }
        res := &TreeNode{
            Val: preorder[0],
        }
        if len(preorder) == 1 {
            return res
        }
        idx := func(val int, nums []int) int {
            for i, v := range nums {
                if v == val {
                    return i
                }
            }
            return -1
        }(res.Val, inorder)
        if idx == -1 {
            return nil
        }
        res.Left = buildTree(preorder[1:idx+1], inorder[:idx])
        res.Right = buildTree(preorder[idx+1:], inorder[idx+1:])
        return res
    }
    

    相关文章

      网友评论

        本文标题:105. Construct Binary Tree from

        本文链接:https://www.haomeiwen.com/subject/nilgvqtx.html