Description
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最小深度 2.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Solution 迭代
类似于最大深度,在这里只在叶节点才更新minDepth。
# 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:
if not root: return 0
Q = [(root, 1)]
minDepth= 1e9
while Q:
node, curDepth = Q.pop(0)
# 防止加入空节点
if node.left:
Q.append((node.left, curDepth+1))
if node.right:
Q.append((node.right, curDepth+1))
if not node.left and not node.right:
minDepth = min(curDepth, minDepth)
return minDept