路徑問題III 二叉樹上的路徑問題

2021-09-28 17:35:15 字數 1212 閱讀 3745

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

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

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

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

解法:這一題裡面的邏輯關係最好組要的是要看清他是不是和一維陣列中的數字相加得到某個數的套路一樣呢,如果是,那麼我們首先是要進行遍歷,前序遍歷是不是符合題意,是的,但是要注意是向下的,就要小心左子樹的葉子結點後面怎麼弄,這裡採取遞迴的方法,就是考慮左右在解決了以根節點開始的所有路徑後,就要找以根節點的左孩子和右孩子開始的所有路徑,三個節點構成了乙個遞迴結構;

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

return

path

(root, sum)

+pathsum

(root-

>left, sum)

+pathsum

(root-

>right, sum);}

private

:int

path

(treenode* root,

int sum)

int res =0;

if(root-

>val==sum)

res +

=path

(root-

>left, sum-root-

>val)

; res +

=path

(root-

>right, sum-root-

>val)

;return res;}}

;

二叉樹 路徑

二叉樹中,從根節點到葉節點的每一條連線,我們稱之為路徑,最短路徑和最長路徑在之前的部落格中,我們已經完成了對他們的討論,現在我們討論一下,輸出一棵二叉樹中全部的路徑資訊。如下所示 public class operation childbinarytreepath root,return resul...

二叉樹路徑和問題

今天回顧了一下二叉樹給定sum的問題,邏輯還是有問題,本以為對的,寫了如下的 bool haspathsum treenode root,int sum if path sum return true p s.top s.pop if p left null path p left val p p ...

二叉樹路徑搜尋問題

1 求任意二叉樹中的所有路徑 細想一下,這其實是乙個dfs問題。有乙個helper函式,用來向list中新增string。這裡為什麼要用靜態的string而不是動態的stringbuilder?另乙個問題是,要動態地新增內容給list,從思路上講應該是回溯法。回溯用動態子結構比如list的話,就需要...