劍指刷題 面試題55 I 二叉樹的深度

2021-10-06 08:37:59 字數 1420 閱讀 4795

題目:

輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點(含根、葉節點)形成樹的一條路徑,最長路徑的長度為樹的深度。

解法:

方法一:遞迴法

"""# 當 root​ 為空,說明已越過葉節點,因此返回 深度 00

ifnot root:

return

0return

max(self.maxdepth(root.left)

,self.maxdepth(root.right))+

1方法二:層序遍歷

每遍歷一層,則計數器 +1+1 ,直到遍歷完成,則可得到樹的深度。

class

solution

(object):

defmaxdepth

(self, root)

:"""

:type root: treenode

:rtype: int

"""ifnot root:

return

0# queue tmp裡直接存放的是結點treenode

queue=

[root]

dep=

0while queue:

# tmp= 每次增加左右結點前要清空

tmp=

for node in queue:

# 如果沒有左右結點就不新增。tmp裡就為空複製給queue也為空。就會退出while迴圈

if node.left:

if node.right:

dep+=

1 queue=tmp

return dep

面試題55 I 二叉樹的深度

題目 輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點 含根 葉節點 形成樹的一條路徑,最長路徑的長度為樹的深度 方法 遞迴左右子樹 遞迴遍歷,取左右子樹的最大深度,加當前根結點的 1 個深度,就是結果 class solution intdfs treenode root in...

面試題55 I 二叉樹的深度

題目 輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點 含根 葉節點 形成樹的一條路徑,最長路徑的長度為樹的深度。例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回它的最大深度 3 節點總數 10000 解題思路 1.如果根節點為空,則返回...

劍指offer 面試題 55 二叉樹的深度

輸入一棵二叉樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。樣例輸入 二叉樹 8,12,2,null,null,6,4,null,null,null,null 如下圖所示 8 12 2 6 4 輸出 3 definition for...