LeetCode 34 路徑總和 II

2021-10-06 21:18:54 字數 1307 閱讀 6817

碼上生花,echarts 作品展示賽正式啟動!>>>

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

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

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

5

/ 4 8

/ /

11 13 4

/ /

7 2 5 1

返回:

[

[5,4,11,2],

[5,8,4,5]

]

本題使用遞迴+回溯的思想dfs遍歷整個二叉樹求出每條目標路徑

首先建立ans結果集用來接收找到的目標路徑,然後定義遞迴方法path尋找每條路徑上滿足題意的路徑

考慮特殊情況:只有根節點或者遍歷到了葉子結點的時候,就將該臨時路徑陣列tmp放入結果集中(每次都初始路徑tmp

其他情況就按照遞迴的方法依次遍歷左右子樹各個結點

所有遍歷結束返回結果集ans即可。

/**

* definition for a binary tree node.

* public class treenode

* }*/class solution

// 傳入4個引數來完成路徑的存放和搜尋

private void path(treenode root, int sum, list> ans, arraylisttmp)

tmp.add(root.val);

// 如果只有根節點或只有葉子結點,則直接放入 ans 中

if (root.left == null && root.right == null && sum == root.val)

path(root.left, sum - root.val, ans, tmp);

path(root.right, sum - root.val, ans, tmp);

// 這裡利用了回溯的思想:每次回退上乙個節點再尋找另一條邊的節點作為新路徑

tmp.remove(tmp.size() - 1);}}

LeetCode112 路徑總和

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

LeetCode 112 路徑總和

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

Leetcode 112 路徑總和

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