美文网首页
112. Path Sum

112. Path Sum

作者: sarto | 来源:发表于2022-06-08 14:27 被阅读0次

    题目

    给定一个二叉树的根节点 roottargetSum,如果这个树从根节点到叶子节点的和与目标值相等,返回 true

    解析

    从整体上来看,一个二叉树是否具有目标值 f(node),取决于f(node.left) || f(node.right)
    为了计算路径和,需要传递已知的路径和。函数原型为
    f(sum, node) bool

    伪代码

    if node == nil
      return false
    if node is leaf
      return target == sum+node.val
    return f(sum+node.val, node.left) || f(sum+node.val node.right)
    

    代码

    func hasPathSum(root *TreeNode, targetSum int) bool {
        return f(targetSum, 0, root)
    }
    
    func f(target int, sum int, node *TreeNode) bool {
        if node == nil {
            return false
        }
        if node.Left == nil && node.Right == nil {
            return target == sum + node.Val
        }
        return f(target, sum+node.Val, node.Left) || f(target, sum+node.Val, node.Right)
    }
    
    image.png

    相关文章

      网友评论

          本文标题:112. Path Sum

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