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))
- // }
|