112 113 路徑總和

2021-10-11 09:19:16 字數 1246 閱讀 9856

給定乙個二叉樹和乙個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。

說明: 葉子節點是指沒有子節點的節點。

// 給定如下二叉樹,以及目標和 sum = 22,

5/ \

48// \ 11134

/ \ / \

7251

//題目112返回示例

返回 true

, 因為存在目標和為 22 的根節點到葉子節點的路徑 5

->4-

>11-

>

2。

//題目113返回示例[[

5,4,

11,2]

,[5,

8,4,

5]]

這兩道題目,基本是一樣的,區別在於,113題做了乙個公升級,輸出了滿足題目要求的根節點的路徑。題目思路基本是一樣的。這兩道題目是找尋根節點道葉子節點的路徑綜合是否滿足所給的目標和。那麼從根節點開始一直找到葉子節點最後判斷是否滿足題目條件就好。所以這是乙個前序遍歷,即我們每一次都是先尋找父節點然後在對子節點進行操作。先給出題目112的**

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

};

題目113需要輸出滿足條件的所有路徑,所以需要對每次中序遍歷的值進行儲存,當遍歷到葉子節點且滿足題目要求是,就將這一次的路徑輸出,就這樣依次遍歷完所以的葉子節點。

class

solution

//繼續遍歷左右節點

path

(root-

>left,sum-root-

>val,vec,res)

;//在遍歷左右節點時,sum的值應該被更新

path

(root-

>right,sum-root-

>val,vec,res);}

vector>

pathsum

(treenode* root, int sum)

};

類似的對樹的遍歷的題目,分為廣度優先和深度優先,廣度優先遍歷即樹的層序遍歷,一般的用佇列來解題。對於深度優先遍歷,樹的前序、中序、後序遍歷都是深度優先遍歷,用遞迴的方法更容易理解。

112 113 路徑總和

遞迴,終止條件為當左節點為空 右為空且sum減去當前節點的值為0是,才返回true 和112題類似,只不過在dfs時要記錄每乙個路徑 class solution object def pathsum self,root,sum res if not root return def helper r...

112 113路徑總和

1.給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。存在路徑就返回true 說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 1返回 true,因為存在目標和為 22 的根...

25 路徑總和

題目描述 我的思路 首先檢視的是根節點,然後用num 根節點的值,並且要考慮到節點是否為空 需要注意的是這裡的遞迴要注意,二叉樹基本都是遞迴來實現 再一次使用遞迴 public static boolean haspathsum treenode root,int sum else return h...