📅  最后修改于: 2023-12-03 15:07:57.536000             🧑  作者: Mango
给定一个二叉树,找到根节点到最近的叶子节点的最短距离。
我们可以使用BFS来解决这个问题。我们从根节点开始进行BFS,同时记录每个节点的深度和是否为叶子节点。当我们遇到第一个叶子节点时,返回它的深度即可。
如果我们没有找到叶子节点,我们可以继续往下走,直到找到叶子节点为止。
from collections import deque
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def minDepth(root: TreeNode) -> int:
if not root:
return 0
queue = deque([(root, 1)])
while queue:
node, depth = queue.popleft()
if not node.left and not node.right:
return depth
if node.left:
queue.append((node.left, depth + 1))
if node.right:
queue.append((node.right, depth + 1))
测试用例1:
输入:
1
/ \
2 3
/ \
4 5
输出: 2
解释:根节点到最近的叶子节点的路径为1 -> 2 -> 4,其深度为2。
测试用例2:
输入:
1
/
2
/
3
输出: 3
解释:根节点到最近的叶子节点的路径为1 -> 2 -> 3,其深度为3。