劍指offer34 二叉樹中和為某一值的路徑

2021-09-29 11:56:39 字數 1198 閱讀 7554

輸入一棵二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。

從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。

樣例

給出二叉樹如下所示,並給出num=22。

5/ \

4 6

/ / \

12 13 6

/ \ / \

9 1 5 1

輸出:[[5,4,12,1],[5,6,6,5]]

利用乙個path儲存中間的路徑的值,每次先把根加入,再把左子樹的根節點加入,直到葉子節點,如果這個葉子節點不滿足條件,則彈出這個節點,退到上一步的根節點,把根節點的右孩子節點加入

# -*- coding:utf-8 -*-

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution:

# 返回二維列表,內部每個列表表示找到的路徑

def dfs(self, root, expectnumber, res, path):

# write code here

if not root:

return

expectnumber = expectnumber - root.val

if not root.left and not root.right and expectnumber==0:

# 如果這裡加了return,在前面要多一次彈棧 path.pop(-1)

self.dfs(root.left, expectnumber, res, path)

self.dfs(root.right, expectnumber, res, path)

# 注意彈出這個節點

path.pop(-1)

def findpath(self, root, expectnumber):

res=

path=

self.dfs(root,expectnumber,res,path)

return res

劍指Offer 34 二叉樹中和為某一值的路徑

題目描述 輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。struct treenode class solution void dfs treenode root,int s,vector ret,vect...

劍指Offer 34 二叉樹中和為某一值的路徑

輸入一棵二叉樹和乙個整數,列印出二叉樹中節點值的和為輸入整數的所有路徑。從樹的根節點開始往下一直到葉節點所經過的節點形成一條路徑。例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 5 1返回 5,4,11,2 5,8,4,5 思路很明確,深度優先搜尋sum node ...

劍指Offer 34 二叉樹中和為某一值的路徑

20.5.3 最佳寫法 注意不要在新增了一條路徑後直接返回,任何乙個節點返回時都要從路徑中pop出去 class solution void dfs treenode root,int sum if root left dfs root left,sum if root right dfs root...