給定乙個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明: 葉子節點是指沒有子節點的節點。
# definition for a binary tree node.
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:def
mindepth
(self, root: treenode)
->
int:
ifnot root:
return
0
result =
list()
self.recur(root,
1, result)
return
min(result)
defrecur
(self, node, height, result):if
not node.left and
not node.right:
return
if node.left:
self.recur(node.left, height +
1, result)
if node.right:
self.recur(node.right, height +
1, result)
佇列當出隊的節點是葉子節點時,更新最小深度
廣度優先遍歷完後,返回最小深度
# definition for a binary tree node.
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:def
mindepth
(self, root: treenode)
->
int:
ifnot root:
return
0
l =[(root,1)
] result =
float
('inf'
)while l:
node, h = l.pop(0)
ifnot node.left and
not node.right:
result =
min(result, h)
if node.left:
(node.left, h +1)
)if node.right:
(node.right, h +1)
)return result
111 二叉樹的最小深度
給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉節點的最短路徑的節點數量。解題思路 這題我想了很久。大概還是對遞迴不太熟悉吧。下面講解一下遞迴的思路 1.如果根節點是null,說明沒有深度。2.如果節點的左右兒子都不存在,說明只有自己,節點深度為1.3.如果節點沒有左兒子,但是有右兒子怎麼...
111 二叉樹的最小深度( )
給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 920 157返回它的最小深度 2.注意 它是到最近的葉子節點,要多考慮根節點 class solution ...
111 二叉樹的最小深度
給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回它的最小深度 2.思路 求樹深用dfs,遞迴遍歷左子樹右子樹,取最小的深度。defini...