解法一:递归

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

TODO:可以尝试改造成尾递归,即在递归参数中将depth作为参数传入。

解法二:带层控制的BFS

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