1. 題目描述
給定一個(gè)二叉樹(shù)和一個(gè)目標(biāo)和,找到所有從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)路徑總和等于給定目標(biāo)和的路徑。
說(shuō)明: 葉子節(jié)點(diǎn)是指沒(méi)有子節(jié)點(diǎn)的節(jié)點(diǎn)。
示例:
給定如下二叉樹(shù),以及目標(biāo)和 sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
返回:
[
[5,4,11,2],
[5,8,4,5]
]
2. 思路
還是利用遞歸,不過(guò)要記錄每一步的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
:
# 如果相等且為葉節(jié)點(diǎn),將root加入字結(jié)果中,并將直接過(guò)加入res
tempPath
+=
[
root
.
val
]
res
.
append
(
tempPath
)
# 繼續(xù)向下遞歸
self
.
dfs
(
root
.
left
,
sum
-
root
.
val
,
tempPath
+
[
root
.
val
]
,
res
)
self
.
dfs
(
root
.
right
,
sum
-
root
.
val
,
tempPath
+
[
root
.
val
]
,
res
)
return
res
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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