437 路徑總和 III

2021-10-02 13:18:32 字數 968 閱讀 5550

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

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

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

二叉樹不超過1000個節點,且節點數值範圍是 [-1000000,1000000] 的整數。

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

返回 3。和等於 8 的路徑有:

5 -> 3

5 -> 2 -> 1

-3 -> 11

不需要求實際的路徑,只需要求路徑數量

用雙遞迴解決,雙遞迴是哪個雙呢,首先有pathsum函式和path函式

pathsum函式用於由某個根為開頭計算路徑,遞迴計算每個節點

path函式則是確定某個根,對其進行遞迴,找出累加路徑值等於sum,若當前根等於sum值則加1然後繼續遞迴,(進行下次遞迴時減去當前節點的值sum-=root->val),否則直接遞迴

/**

* definition for a binary tree node.

* struct treenode ;

*/int

path

(struct treenode* root ,

int sum)

cnt+

=path

(root->left,sum-root->val)

+path

(root->right,sum-root->val)

;return cnt;

}int

pathsum

(struct treenode* root,

int sum)

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