[LeetCode By Go 73]437. Path Sum III

題目

You are given a binary tree in which each node contains an integer value.

Find the number of paths that sum to a given value.

The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).

The tree has no more than 1,000 nodes and the values are in the range -1,000,000 to 1,000,000.

Example:

root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8

      10
     /  \
    5   -3
   / \    \
  3   2   11
 / \   \
3  -2   1

Return 3. The paths that sum to 8 are:

  1. 5 -> 3
  2. 5 -> 2 -> 1
  3. -3 -> 11

解題思路

遍歷二叉樹所有節點(任何遍歷方式)
對每個節點,計算他和子節點組成的路徑的節點值的和是否等于目標值,如果是,則路徑的值加1

代碼

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
var ret int

func downTravel(t *TreeNode, sumNeed, sumGet int)  {
    if nil == t {
        return
    }
   
    sumGet += t.Val
    if sumGet == sumNeed {
        ret++
    }
    
    downTravel(t.Left, sumNeed, sumGet)
    downTravel(t.Right, sumNeed, sumGet)
}

func preOrderTravel(t *TreeNode, sum int)  {
    if nil == t {
        return
    }

    downTravel(t, sum, 0)

    preOrderTravel(t.Left, sum)
    preOrderTravel(t.Right, sum)
}

func pathSum(root *TreeNode, sum int) int {
    ret = 0
    preOrderTravel(root, sum)

    return ret
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,769評論 0 33
  • 2012年7月,一行好友,三輛越野,從成都到青海湖自駕游。旅途的大致情形我在此娓娓道來,這既是旅途各異的風景,先疾...
    蘭知雪閱讀 991評論 2 8
  • 誰作浮世黃粱夢, 一念執著逝一生; 有種回憶寄相思, 才作相思已成翁。
    他說這不是詩閱讀 156評論 0 0
  • 這個季節,槐花已經開過 這種潔白再好不過 如果有一朵流落枝頭 是否是曾經前世有約 讀圣賢書,緘默無言 功名歸于塵土...
    春風明月閱讀 469評論 0 1
  • If I don't have the pressure to survive,what would I do?T...
    HelloToo閱讀 472評論 0 1