二叉樹路徑相關 python

2021-10-04 18:19:21 字數 1086 閱讀 6966

112. 路徑總和

113. 路徑總和 ii

257. 二叉樹的所有路徑

129. 求根到葉子節點數字之和

面試題 04.12. 求和路徑

二叉樹結點的資料結構為:

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

一般來說,樹、圖類的問題大部分可用dfs、bfs進行求解。總歸是要利用這兩種遍歷方式,在遍歷的過程中對利用當前節點進行處理。這裡的幾道題都可以歸結為得到從一棵樹的根節點到所有葉子節點的所有路徑。

def dfs(root,path):

if root==none:

return

if root!=none and root.left==none and root.right==none:

dfs(root.left,path)

dfs(root.right,path)

#根節點才能執行到此,當root為葉子節點的這一次呼叫的返回點,需要將path的最後乙個元素(葉子節點值)pop掉

path.pop()

res=

dfs(root,)

#執行完dfs後,例如res中為[[1,2,3],[1,2]]

這裡的關鍵在於,dfs不返回任何資料,傳入引數有乙個列表,在每次遞迴呼叫的時候都會向列表中增加當前節點的值,直到當前節點為葉子節點的時候,可看到,遞迴函式中遞迴終止條件有root==none,也即,當前節點為葉子節點的時候對自己的左右孩子(均為none)分別呼叫dfs,然後就返回了,只是走個過場。然後執行到path.pop(),因為如果不pop()的話,path中的元素會一直增加,所以也就是必須在執行完葉子節點的那次呼叫的時候把葉子節點的值彈出才能返回給上層函式。

以上題目均可套用次**框架暴力求解,個別題目可以邊遍歷,邊得出要返回的結果。

二叉樹 路徑

二叉樹中,從根節點到葉節點的每一條連線,我們稱之為路徑,最短路徑和最長路徑在之前的部落格中,我們已經完成了對他們的討論,現在我們討論一下,輸出一棵二叉樹中全部的路徑資訊。如下所示 public class operation childbinarytreepath root,return resul...

二叉樹相關

1.首先建立乙個樹節點,節點有值,左節點和右節點 author 張夢楠 title package description date 2018 5 2519 27 blog www.itzmn.com 樹的節點類 public class treenode public treenode int v...

二叉樹相關

廣度優先遍歷 對於每層的節點,放到乙個用來處理節點佇列裡,另外每個佇列對應乙個vector,將每層節點放進vector 對於每個佇列,彈出先放的元素q.front,將這個元素放進vector,隨後,將左節點和右子節點放進佇列 class solution queue q q.push root wh...