中文english
給定乙個二叉樹,找出所有路徑中各節點相加總和等於給定目標值
的路徑。
乙個有效的路徑,指的是從根節點到葉節點的路徑。
樣例1:
輸入:
5輸出: [[1, 2, 2],[1, 4]]
說明:這棵樹如下圖所示:
1/ \
2 4
/ \2 3
對於目標總和為5,很顯然1 + 2 + 2 = 1 + 4 = 5
樣例2:
輸入:
3輸出:
說明:這棵樹如下圖所示:
1/ \
2 4
/ \2 3
注意到題目要求我們尋找從根節點到葉子節點的路徑。
1 + 2 + 2 = 5, 1 + 2 + 3 = 6, 1 + 4 = 5
這裡沒有合法的路徑滿足和等於3.
輸入測試資料 (每行乙個引數)如何理解測試資料?
dfs寫法
"""definition of treenode:
class
treenode:
def __init__(self, val):
self.val =val
self.left, self.right =none, none
"""class
solution:
"""@param: root: the root of binary tree
@param: target: an integer
@return: all valid paths
"""def binarytreepathsum(self, root, target):
# write your code here
results =
self.dfs(root, results, ,
0, target)
return
results
def dfs(self, root, results, path, sums, target):
if not root: return
sums +=root.val
#如果要加return的話,需要pop掉乙個值,否則path的值除了第乙個,後面都是大於target的
if not root.left and not root.right and sums ==target:
path.pop()
return
self.dfs(root.left, results, path, sums, target)
self.dfs(root.right, results, path, sums, target)
#回溯,往回刪除,找根節點
path.pop()
LintCode 376 二叉樹的路徑和
給定乙個二叉樹,找出所有路徑中各節點相加總和等於給定目標值的路徑。乙個有效的路徑,指的是從根節點到葉節點的路徑。樣例 給定乙個二叉樹,和目標值 5 1 2 4 2 3返回 1,2,2 1,4 思路 首先找到葉子節點,這樣從根節點到葉子結點才是路徑,隨後判斷該路徑一路上的節點值之和是否等於給定目標值。...
Lintcode 376 二叉樹的路徑和
給定乙個二叉樹,找出所有路徑中各節點相加總和等於給定目標值的路徑。乙個有效的路徑,指的是從根節點到葉節點的路徑。您在真實的面試中是否遇到過這個題?yes 樣例給定乙個二叉樹,和目標值 5 1 2 4 2 3返回 1,2,2 1,4 definition of treenode public clas...
lintcode 376 二叉樹的路徑和
給定乙個二叉樹,找出所有路徑中各節點相加總和等於給定 目標值 的路徑。乙個有效的路徑,指的是從根節點到葉節點的路徑。樣例 樣例1 輸入 5 輸出 1 2,2 1 4 說明 這棵樹如下圖所示 1 2 4 23對於目標總和為5,很顯然1 2 2 1 4 5 樣例2 輸入 3 輸出 說明 這棵樹如下圖所示...