給定乙個二叉樹,它的每個結點都存放著乙個整數值。
找出路徑和等於給定數值的路徑總數。
路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的(只能從父節點到子節點)。
二叉樹不超過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 的路徑有:
1. 5 -> 3
2. 5 -> 2 -> 1
3. -3 -> 11
1package
leetcode.binarytree;23
public
class
pathsumiii 11}
12//
pathsum:對於乙個節點來說,路徑和可以分為3個部分,包含該節點的路徑和、不包含該節點的左、右子樹是否存在該路徑和
13//
haspath:對於查詢是否存在該路徑和也為乙個遞迴過程,但尋找的是包含該節點的路徑
14public
int pathsum(treenode root, int
sum)
18int res = 0;
19 res =haspath(root, sum);
20 res +=pathsum(root.left, sum);
21 res +=pathsum(root.right,sum);
22return
res;
23}
24public
static
int haspath(treenode node, int
sum)
28int num = 0;
29if(node.val ==sum)
32 num += haspath(node.left, sum -node.val);
33 num += haspath(node.right, sum -node.val);
34return
num;35}
36 }
437 路徑總和 III
給定乙個二叉樹,它的每個結點都存放著乙個整數值。找出路徑和等於給定數值的路徑總數。路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的 只能從父節點到子節點 二叉樹不超過1000個節點,且節點數值範圍是 1000000,1000000 的整數。示例 root 10,5,3,3,2...
437 路徑總和 III
給定乙個二叉樹,它的每個結點都存放著乙個整數值。找出路徑和等於給定數值的路徑總數。路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的 只能從父節點到子節點 二叉樹不超過1000個節點,且節點數值範圍是 1000000,1000000 的整數。示例 root 10,5,3,3,2...
437 路徑總和 III
和112 113題類似 不過這一題更難一些,需要進行雙重遞迴 即對每個節點做遞迴,再以該節點為起點進行dfs,搜尋滿足條件的路徑 class solution object def init self self.count 0 def pathsum self,root,sum if not roo...