給定乙個二叉樹,它的每個結點都存放著乙個整數值。
找出路徑和等於給定數值的路徑總數。
路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的(只能從父節點到子節點)。
二叉樹不超過1000個節點,且節點數值範圍是 [-1000000,1000000] 的整數。
示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8
10/ \
5 -3
/ \ \
3 2 11
/ \ \
3 -2 1
返回 3。和等於 8 的路徑有:
5 -> 3
5 -> 2 -> 1
-3 -> 11
每個結點的值既需要作為中間結點儲存在父親、爺爺結點的和中,也需要將其作為乙個新的路徑並儲存下來;
需要有乙個資料結構來儲存當前各個路徑的和,並允許結點值對這些和進行修改;
題目中給定二叉樹不超過1000個節點,最多存在1000個路徑,所以初始化長度為1000的陣列,第i個位置儲存從跟節點一直到當前結點的路徑上的第i個結點作為開始路徑的結點值的和;
count代表當前是從根結點開始的第count個結點;
當前結點在所有從根結點開始到本結點的路徑上,即從陣列從0到count-1上的所有元素都加當前值,如果等於sum,結果數量加一;
遍歷完該結點之後,把陣列中從0到count-1上的所有元素都減當前值,count–。
/**
* definition for a binary tree node.
* public class treenode
* }*/class
solution
pathsum
(root.left, sum)
;pathsum
(root.right, sum)
;for
(int i =
0; i < count; i++
) count--
;return allsum;
}}
LeetCode112 路徑總和
給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和sum 22,5 48 1113 4 721返回true,因為存在目標和為 22 的根節點到葉子節點的路徑5 4 11 2。遍...
LeetCode 112 路徑總和
給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 1 返回 true,因為存在目標和為 22 的根節點到葉子節點的路徑 5 ...
Leetcode 112 路徑總和
給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和sum 22,5 48 1113 4 721 返回true,因為存在目標和為 22 的根節點到葉子節點的路徑5 4 11 2。...