題目:
給定乙個二叉樹和乙個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定如下二叉樹,以及目標和 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...