题目
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最小深度 2.
解题思路
层次遍历即可,在队列中同时放上该节点对应的高度,第一个叶子节点就是最短的路径
时间复杂度为
o
(
n
)
o(n)
o(n)
代码
class Solution:
def minDepth(self
, root
: TreeNode
) -> int:
if not root
:
return 0
deque
= collections
.deque
([(root
, 1)])
while deque
:
node
, level
= deque
.popleft
()
if node
.left
:
deque
.append
((node
.left
, level
+ 1))
if node
.right
:
deque
.append
((node
.right
, level
+ 1))
if (not node
.left
) and (not node
.right
):
return level