Skip to content

104. Maximum Depth of Binary Tree

Easy LeetCode

Given the root of a binary tree, return its maximum depth.

A binary tree's maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

Example 1

104. Maximum Depth of Binary Tree

Input: root = [3,9,20,null,null,15,7]

Output: 3

Example 2

Input: root = [1,null,2]

Output: 2

Constraints

  • The number of nodes in the tree is in the range [0, 104]
  • -100 <= Node.val <= 100

How to solve the problem

Code

Approach 1: Recursion (Bottom to Top)

Python
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        if root is None:
            return 0
        left_depth = self.maxDepth(root.left)
        right_depth = self.maxDepth(root.right)
        return max(left_depth, right_depth) + 1

Approach 2: Recursion (Top to Bottom)

Python
class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        ans = 0
        def dfs(node: Optional[TreeNode], depth: int) -> None:
            if node is None:
                return
            depth += 1
            nonlocal ans
            ans = max(ans, depth)
            dfs(node.left, depth)
            dfs(node.right, depth)
        dfs(root, 0)
        return ans

Complexity

  • Time complexity: O(n), n == number of nodes
  • Space complexity: O(n)

Comments

No comments yet. Be the first to comment!