104. Maximum Depth of Binary Tree
Easy LeetCodeGiven 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
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!