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

55 lines
1.3 KiB
Plaintext

---
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"
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))
```