LeetCode 路徑總和III

2021-09-13 14:10:19 字數 1703 閱讀 5794

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

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

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

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

思路分析:使用遞迴,先搜尋以root為起始點的路徑,然後搜尋以root->left、root->right為起始點的路徑。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

//以root為終點

if(root-

>val + nowsum == sum)

if(flag)

//當flag == false說明當前root不是起始點,繼續延續路徑長

方法二:雙重遞迴。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

//以root為終點

sum -= root-

>val;

if(sum ==0)

mypathsum

(root-

>left, sum)

;//向左

mypathsum

(root-

>right, sum)

;//向右

}int

pathsum

(treenode* root,

int sum)

mypathsum

(root, sum)

;//以root為根

pathsum

(root-

>left, sum)

;//以left為根

pathsum

(root-

>right, sum)

;//以right為根

路徑總和 III

給定乙個二叉樹,它的每個結點都存放著乙個整數值。找出路徑和等於給定數值的路徑總數。路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的 只能從父節點到子節點 二叉樹不超過1000個節點,且節點數值範圍是 1000000,1000000 的整數。示例 root 10,5,3,3,2...

leetcode Tree 路徑總和 III

1,題目 2,思路 方法一 迭代法 方法二 用hashmap 字首和的遞迴回溯思路 3,方法一 迭代法 class solution int result countpath root,sum int a pathsum root.left,sum int b pathsum root.right,...

Leetcode 437 路徑總和 III

給定乙個二叉樹,它的每個結點都存放著乙個整數值。找出路徑和等於給定數值的路徑總數。路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的 只能從父節點到子節點 二叉樹不超過1000個節點,且節點數值範圍是 1000000,1000000 的整數。示例 題目解釋 由題意可知,即從二叉...