104 二叉樹的最大深度

2022-01-26 14:47:15 字數 1774 閱讀 7331

《遞迴解法》《深搜》

給定乙個二叉樹,找出其最大深度。

二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。

說明:葉子節點是指沒有子節點的節點。

示例:

給定二叉樹[3,9,20,null,null,15,7]

3

/ \9 20

/ \

15 7

返回它的最大深度 3 。

借助額外變數,廣搜

class

solution(object):

defmaxdepth(self, root):

""":type root: treenode

:rtype: int

"""deep=0

que=

if root is

none:

return

0

while

len(que):

actdeeplength=len(que)

#設計乙個迴圈把這一層的節點全pop出去,外迴圈則從下一層的節點開始

while

actdeeplength:

actnode=que.pop(0)

actdeeplength-=1

if actnode.left is

notnone:

if actnode.right is

notnone:

deep+=1

return deep

借助額外空間,廣搜

class

solution(object):

defmaxdepth(self, root):

""":type root: treenode

:rtype: int

"""deep=0

que=

if root is

none:

return

0

while

len(que):

#構造乙個容器nextque來裝當前節點下一層的所有元素

nextque=

for node in

que:

if node.left is

not

if node.right is

not

#下次迴圈就遍歷下一層的元素

que=nextque

deep+=1

return deep

在leetcode題解看到一篇文章:用乙個遞迴套路來解決二叉樹路徑問題。

文章提到自底向上的思考方法,符合這道題的官方題解思路。

def

maxdepth(self, root):

""":type root: treenode

:rtype: int

"""if

notroot:

return

0left =self.maxdepth(root.left)

right =self.maxdepth(root.right)

return max(left,right)+1

1.看懂遞迴**是乙個層面,那麼如何去設計遞迴呢?

這是我一直疑惑的點,**層面已經能夠理解,個人認為下一步應該多刷題,見識各種各樣的遞迴設計思路,期待量變到質變。

104 二叉樹的最大深度

給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回它的最大深度 3 思路 使用遞迴,遍歷左子樹右子樹,使用max找出最大的深度。defin...

104 二叉樹的最大深度

給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回它的最大深度 3 解題思路 採用dfs進行深度搜尋,一行算一次搜尋,輸出結果長度即可。...

104 二叉樹的最大深度

每日leetcode 24 二叉樹的最大深度 給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回它的最大深度 3 這道題遞迴到最後葉節點...