解法一:递归

  1. class Solution:
  2. def minDepth(self, root: TreeNode) -> int:
  3. if not root:
  4. return 0
  5. left = self.minDepth(root.left)
  6. right = self.minDepth(root.right)
  7. if not left or not right:
  8. return left + right + 1
  9. return min(left, right) + 1

解法二:BFS

这个方法时间排名非常后,不知道为什么!

  1. class Solution:
  2. def minDepth(self, root: TreeNode) -> int:
  3. queue = [root] if root else []
  4. levels = 0
  5. while queue:
  6. levels += 1
  7. for _ in range(len(queue)):
  8. node = queue.pop(0)
  9. if not node.left and not node.right:
  10. return levels
  11. if node.left:
  12. queue.append(node.left)
  13. if node.right:
  14. queue.append(node.right)
  15. return levels