Skip to main content

路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false

叶子节点 是指没有子节点的节点。

// 增加一个遍历函数 遍历函数的参数里面带上当前的路径的sum
//
func hasPathSum(root *TreeNode, targetSum int) bool {
var help func(node *TreeNode, localSum int) bool
help = func(node *TreeNode, localSum int) bool {
if node == nil {
return false
}
if localSum+node.Val == targetSum && node.Left == nil && node.Right == nil {
return true
}
return help(node.Left, localSum+node.Val) || help(node.Right, localSum+node.Val)
}
return help(root, 0)
}

很明显,如果当前节点要从上面节点拿数据,就要在遍历函数的参数中带上数据。

如果从下面节点拿数据,就要在遍历函数的返回值中带数据,一般后序遍历。