Files
leetcode/apps/docs/content/(03-hierarchical)/tree-dfs/104_maximum-depth-of-binary-tree.mdx
T

63 lines
1.8 KiB
Plaintext
Raw Normal View History

---
title: '104. Maximum Depth of Binary Tree'
description: Given the root of a binary tree, return its maximum depth
icon: dot
topics:
- { name: "Tree", slug: "tree" }
- { name: "Depth-First Search", slug: "depth-first-search" }
- { name: "Breadth-First Search", slug: "breadth-first-search" }
- { name: "Binary Tree", slug: "binary-tree" }
video: "hTM3phVI6YQ"
issue: "https://github.com/prdlk/leetcode/issues/97"
companies:
- { name: "Bloomberg", period: "Thirty Days", frequency: 83.1 }
- { name: "Google", period: "Thirty Days", frequency: 42.3 }
- { name: "tcs", period: "Three Months", frequency: 47.7 }
- { name: "Microsoft", period: "Three Months", frequency: 42.1 }
- { name: "Amazon", period: "Three Months", frequency: 21.2 }
- { name: "LinkedIn", period: "Six Months", frequency: 54.1 }
- { name: "Meta", period: "Six Months", frequency: 32.7 }
sidebar:
label: 'Maximum Depth of Binary Tree'
badge: 'Easy'
---
### 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, 10^4].
- `-100 <= Node.val <= 100`
## Approach
```mermaid
flowchart TD
S(["maxDepth(root)"]) --> B{"root is None?"}
B -- yes --> Z(["return 0"])
B -- no --> L["l = maxDepth(root.left), r = maxDepth(root.right)"]
L --> E(["return 1 + max(l, r) — this node adds one level above its deeper subtree"])
```
## Solution
```py
# Definition for a binary tree node.
# 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 not root:
return 0
return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right))
```