> For the complete documentation index, see [llms.txt](https://jaywin.gitbook.io/leetcode/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jaywin.gitbook.io/leetcode/solutions/0104-maximum-depth-of-binary-tree.md).

# 0104. Maximum Depth of Binary Tree

<https://leetcode.com/problems/maximum-depth-of-binary-tree>

## Description

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:**

![](https://assets.leetcode.com/uploads/2020/11/26/tmp-tree.jpg)

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

**Example 2:**

```
**Input:** root = [1,null,2]
**Output:** 2
```

**Example 3:**

```
**Input:** root = []
**Output:** 0
```

**Example 4:**

```
**Input:** root = [0]
**Output:** 1
```

**Constraints:**

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

## ac

```java
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int maxDepth(TreeNode root) {
        int depth = 0;
        if (root == null) return 0;

        int left =  maxDepth(root.left);
        int right = maxDepth(root.right);

        return left > right ? 1 + left : 1 + right;
    }
}
```
