## 題解
### DFS (Recursion)
```python=
# 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:
self.max_depth = 0
def dfs(node: TreeNode,level: int):
if node:
self.max_depth = max(self.max_depth, level)
if node.left:
dfs(node.left, level + 1)
if node.right:
dfs(node.right, level + 1)
dfs(root,1)
return self.max_depth
```
### BFS
```python=
# 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:
queue = [root]
max_depth = 0
while queue:
length = len(queue)
state = False
for i in range(length):
node = queue.pop(0)
if node:
state = True
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
if state:
max_depth += 1
return max_depth
```