104.Maximum Depth of Binary Tree
===
###### tags: `Easy`,`Tree`,`BFS`,`DFS`,`Binary Tree`
[104. Maximum Depth of Binary Tree](https://leetcode.com/problems/maximum-depth-of-binary-tree/)
### 題目描述
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
```
**Constraints**:
* The number of nodes in the tree is in the range [0, 10^4^].
* -100 <= `Node.val` <= 100
### 解答
#### Python
```python=
class Solution:
def maxDepth(self, root: Optional[TreeNode]) -> int:
return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1 if root else 0
```
> [name=Ron Chen][time=Thu, Feb 16, 2023]
#### Javascript
```javascript=
function maxDepth(root) {
if (root === null) return 0;
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
}
```
非遞迴版本
```javascript=
function maxDepth2(root) {
if (root === null) return 0;
const queue = [root];
let depth = 0;
while (queue.length > 0) {
const size = queue.length;
for (let i = 0; i < size; i++) {
const node = queue.shift();
if (node.left !== null) queue.push(node.left);
if (node.right !== null) queue.push(node.right);
}
depth++;
}
return depth;
}
```
> [name=Marsgoat][time=Thu, Feb 16, 2023]
#### C#
```csharp=
public class Solution {
public int MaxDepth(TreeNode root) {
return root == null ? 0 : 1 + Math.Max(MaxDepth(root.left), MaxDepth(root.right));
}
}
```
> [name=Jim][time=Thu, Feb 16, 2023]
### Reference
[回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)