| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | package main// type TreeNode struct {// 	Val   int// 	Left  *TreeNode// 	Right *TreeNode// }// important!! "leaf node"func hasPathSumIter(root *TreeNode, sum int, tmpSum int) bool {	if root.Left == nil && root.Right == nil {		return tmpSum+root.Val == sum	}	if root.Left == nil {		return hasPathSumIter(root.Right, sum, tmpSum+root.Val)	}	if root.Right == nil {		return hasPathSumIter(root.Left, sum, tmpSum+root.Val)	}	return hasPathSumIter(root.Left, sum, tmpSum+root.Val) || hasPathSumIter(root.Right, sum, tmpSum+root.Val)}/** * 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	}	return hasPathSumIter(root, sum, 0)}// func main() {// 	/**// 	 * t1:  5// 	 *     / \// 	 *    1   4// 	 *       / \// 	 *      2   3// 	 */// 	t1r := TreeNode{4, nil, nil}// 	t1 := &TreeNode{5, nil, &t1r}// 	fmt.Println(hasPathSum(t1, 11))// 	fmt.Println(hasPathSum(t1, 5))// 	fmt.Println(hasPathSum(t1, 7))// 	fmt.Println(hasPathSum(nil, 0))// }
 |