1. 題目描述
給定一個二叉樹和一個目標和,找到所有從根節點到葉子節點路徑總和等于給定目標和的路徑。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定如下二叉樹,以及目標和 sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
返回:
[
[5,4,11,2],
[5,8,4,5]
]
2. 思路
還是利用遞歸,不過要記錄每一步的root.val。
class
Solution
:
def
pathSum
(
self
,
root
:
TreeNode
,
sum
:
int
)
-
>
List
[
List
[
int
]
]
:
if
root
==
None
:
return
[
]
temp
=
[
]
result
=
[
]
return
self
.
dfs
(
root
,
sum
,
temp
,
result
)
def
dfs
(
self
,
root
,
sum
,
tempPath
,
res
)
:
if
root
==
None
:
return
res
if
root
.
val
==
sum
and
not
root
.
left
and
not
root
.
right
:
# 如果相等且為葉節點,將root加入字結果中,并將直接過加入res
tempPath
+=
[
root
.
val
]
res
.
append
(
tempPath
)
# 繼續向下遞歸
self
.
dfs
(
root
.
left
,
sum
-
root
.
val
,
tempPath
+
[
root
.
val
]
,
res
)
self
.
dfs
(
root
.
right
,
sum
-
root
.
val
,
tempPath
+
[
root
.
val
]
,
res
)
return
res
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
