对一棵树进行遍历,从根节点到叶子结点遍历节点的和如果等于目标值sum,返回true,否则返回false,递归算法如下所示
如果根节点为空,返回false
如果根节点没有左右子树,判断sum与根节点的值是否一致,一致返回true
否则,对根节点的左子树和右子树进行遍历
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func hasPathSum(root *TreeNode, sum int) bool {
if root == nil{
return false
}
if root.Left == nil && root.Right == nil && sum == root.Val{
return true
}
return hasPathSum(root.Left, sum - root.Val) || hasPathSum(root.Right, sum-root.Val)
}