二叉樹的最大深度
該題是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 ...