题目:
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点。
来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
示例:
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:2
示例 2:输入:root = [2,null,3,null,4,null,5,null,6]
输出:5
解法:
BFS,记录层数,遇到没有左右子树的结点返回层数。
代码:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def minDepth(self, root: Optional[TreeNode]) -> int: queue = [(0, root)] while queue: level, cur = queue.pop(0) if cur: if cur.left: queue.append((level + 1, cur.left)) if cur.right: queue.append((level + 1, cur.right)) if cur.left is None and cur.right is None: return level + 1 else: return level