题目
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
题解
DFS:
class Solution: def minDepth(self, root: TreeNode) -> int: if not root: return 0 if not root.left and not root.right: return 1 min_depth = float('inf') if root.left: min_depth = min(self.minDepth(root.left), min_depth) if root.right: min_depth = min(self.minDepth(root.right), min_depth) return min_depth + 1
时间复杂度 O(N)
空间复杂度 O(H) H是树的高度
BFS
class Solution: def minDepth(self, root: TreeNode) -> int: if not root: return 0 queue = [] queue.append((root, 1)) while queue: node, level = queue.pop(0) if not node.left and not node.right: return level if node.left: queue.append((node.left, level + 1)) if node.right: queue.append((node.right, level + 1)) return 0
时间复杂度 O(N)
空间复杂度 O(N)
所有的节点要循环一遍