路径总和
给你二叉树的根节点
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)
}
很明显,如果当前节点要从上面节点拿数据,就要在遍历函数的参数中带上数据。
如果从下面节点拿数据,就要在遍历函数的返回值中带数据,一般后序遍历。