解题思路大同小异,但是分享一下Go的实现

package main
import . "nc_tools"
/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
  * 
  * @param root TreeNode类 
  * @param sum int整型 
  * @return bool布尔型
*/
func hasPathSum( root *TreeNode ,  sum int ) bool {
    // write code here
    return dfs(root, sum)
}

func dfs(node *TreeNode, sum int) bool {
    if node == nil {
        return false
    }
    if node.Left == nil && node.Right == nil && node.Val == sum {
        return true
    }
    return dfs(node.Left, sum - node.Val) || dfs(node.Right, sum - node.Val)
}