目录

0111:二叉树的最小深度

力扣第 111 题

题目

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:2

示例 2:

输入:root = [2,null,3,null,4,null,5,null,6]
输出:5

提示:

  • 树中节点数的范围在 [0, 105]
  • -1000 <= Node.val <= 1000

分析

可以用递归,也可以层序遍历,遇到第一个叶子节点返回层数即可。

解答

1
2
3
4
5
6
7
8
9
class Solution:
    def minDepth(self, root: Optional[TreeNode]) -> int:
        res,Q = 0,[root] if root else []
        while Q:
            res += 1
            if any(not u.left and not u.right for u in Q):
                break
            Q = [c for u in Q for c in [u.left,u.right] if c]
        return res

233 ms