美文网首页
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