刷題篇 二叉樹的最大深度

2021-10-07 12:53:03 字數 983 閱讀 8535

二叉樹的最大深度

該題是leetcode 104,是一道簡單的經典題。本文用兩種方法去得到二叉樹的最大深度。

1.遞迴

本題遞迴方法比較簡單,也容易理解。涉及樹的問題,很多都可以使用遞迴。

def

maxdepth

(root)

:if root is

none

:return

0#遞迴都要有終止條件

ldepth = maxdepth(root.left)

rdepth = maxdepth(root.right)

return

max(ldepth, rdepth)

+1

2.非遞迴

非遞迴方法我們可以使用樹的深度遍歷,得出每條路徑,最長的路徑就是樹的深度。

def

maxdepth

(root)

:if root is

none

:return

0 res =

stack=

[(root,

[root.val])]

while stack:

node, path = stack.pop(

)if node.left is

none

and node.right is

none

:if node.left:

(node.left, path+

[node.left.val]))

if node.right:

(node.right, path+

[node.right.val]))

length =

[len

(x)for x in res]

return

max(length)

樹的廣度遍歷、深度遍歷應該達到不思考直接寫出來的程度。

刷題 104 二叉樹的最大深度

給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點 如果我們知道了左子樹和右子樹的最大深度 l 和 r,那麼該二叉樹的最大深度即為max l,r 1 而左子樹和右子樹的最大深度又可以以同樣的方式進行計算。因此我們在計算當前二叉樹...

牛客網刷題 二叉樹的最大深度

求給定二叉樹的最大深度,最大深度是指樹的根結點到最遠葉子結點的最長路徑上結點的數量。輸入 給定的二叉樹是,輸出 3深度優先搜尋 ps 使用遞迴 二叉樹的最大深度可以通過深度優先搜尋遍歷的方式去計算。遞迴的解析 終止條件 當 root 為空,說明已越過葉節點,因此返回 深度 0 遞推工作 本質上是對樹...

二叉樹的深度 二叉樹的深度 二叉樹最大寬度

題目 輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點 含根 葉節點 形成樹的一條路徑,最長路徑的長度為樹的深度。例如 給定二叉樹 3,9,20,null,null,15,7 返回它的最大深度 3 根節點加上左右子樹的最大深度就是樹的最大深度。如下 class solution ...