二叉樹的路徑總和2 2021 01 20

2021-10-16 17:56:46 字數 1400 閱讀 7048

題目:

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

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

示例:

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

5

/ \4 8

/ / \

11 13 4

/ \ / \

7 2 5 1

返回:

[[5,4,11,2],

[5,8,4,5]

]解題思路:

該題目是求出所有路徑和滿足目標和的路徑,我使用的是深度優先遍歷演算法,將每條路徑的值都儲存在乙個list中,只要路徑和滿足目標路徑就將該路徑新增至結果集中,最後返回結果集。

**:

/**

* definition for a binary tree node.

* public class treenode

* treenode(int val)

* treenode(int val, treenode left, treenode right)

* }*/class solution

public void

dfs(list path,

int targetsum, treenode root)

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

newpath.

add(root.val)

;

paths.

add(newpath)

;return;}

else

} targetsum-

=root.val;

path.

add(root.val)

;//將該節點的val儲存進路徑中

dfs(path, targetsum, root.left)

;//遍歷左子樹

dfs(path, targetsum, root.right)

;//遍歷右子樹

path.

remove

(path.

size()

-1);

//回溯,去除該路徑上的該節點的val

}}

結果:

我的解題思路速度比較快,但是對記憶體的消耗比較大。

二叉樹路徑總和

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

二叉樹的路徑總和

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

二叉樹的路徑總和

definition for a binary tree node.struct treenode 給定乙個二叉樹和乙個目標和,找到所有從根節點到葉子節點路徑總和 等於給定目標和的路徑。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7...