437 路徑總和 III

2022-09-12 23:06:23 字數 1231 閱讀 1234

給定乙個二叉樹,它的每個結點都存放著乙個整數值。

找出路徑和等於給定數值的路徑總數。

路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的(只能從父節點到子節點)。

二叉樹不超過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

1

package

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...