解法一:递归
class Solution:def maxDepth(self, root: TreeNode) -> int:if not root:return 0left = self.maxDepth(root.left) + 1right = self.maxDepth(root.right) + 1return max(left, right)
TODO:可以尝试改造成尾递归,即在递归参数中将depth作为参数传入。
解法二:带层控制的BFS
class Solution:def maxDepth(self, root: TreeNode) -> int:queue = [root] if root else []ans = 0while queue:ans += 1for _ in range(len(queue)):node = queue.pop(0)if node.left:queue.append(node.left)if node.right:queue.append(node.right)return ans
