376 二叉樹的路徑和

2022-02-14 20:37:12 字數 1486 閱讀 3663

中文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 輸出 說明 這棵樹如下圖所示...