leetcode112 路徑總和

2022-09-04 12:36:11 字數 1252 閱讀 2086

dfs+雙棧常規題,題目如下

給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。

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

示例:

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

=22,

5/ \ 48/

/ \ 11134

/ \ \

721返回 true, 因為存在目標和為 22 的根節點到葉子節點的路徑 5

->4-

>11-

>

2。

首先分析複雜度,這題我是拿dfs去實現,因為需要遍歷到的其實就是最後的葉子節點,這個時候肯定就是選擇dfs了,然後使用兩個棧來輔助實現,乙個棧用來儲存節點,另乙個棧用來儲存節點此時累加的得到的值

class

solution

(object):

defhaspathsum

(self, root,

sum)

:"""

:type root: treenode

:type sum: int

:rtype: bool

"""ifnot root:

return

false

nodestack =

[root]

# numberstack = [1]

valuestack =

[root.val]

while nodestack:

node = nodestack.pop(

)# number = numberstack.pop()

value = valuestack.pop()if

not node.left and

not node.right:

if value ==

sum:

return

true

else

:continue

if node.left !=

none

:if node.right !=

none

:return

false

執行用時 : 44 ms, 在path sum的python提交中擊敗了99.65% 的使用者

記憶體消耗 : 15.4 mb, 在path sum的python提交中擊敗了25.82% 的使用者

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。...