# LeetCode 104: 二叉树的最大深度 Maximum Depth of Binary Tree

### 题目:

Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

Note: A leaf is a node with no children.

```    3
/ \
9  20
/  \
15   7
```

### 解题思路:

• BFS 广度优先遍历时用一个变量记录深度
• DFS 深度优先遍历时保留每次遍历到叶子结点时的最大深度

### "自顶向下"递归解法:

Java:

```class Solution {
public int maxDepth(TreeNode root) {
// 基线条件
if (root == null)
return 0;
// 递归左子结点
int leftDepth = maxDepth(root.left);
// 递归右子结点
int rightDepth = maxDepth(root.right);
// 返回当前结点的子树最大深度
return Math.max(leftDepth, rightDepth) + 1;
}
}
```

Python:

```class Solution:
def maxDepth(self, root: TreeNode) -> int:
# 基线条件
if not root:
return 0
# 递归左子结点
left_depth = self.maxDepth(root.left)
# 递归右子结点
right_depth = self.maxDepth(root.right)
# 返回当前结点的子树最大深度
return max(left_depth, right_depth)+1
```

### "自底向上"递归解法

Java:

```class Solution {
// 记录最大深度
int res = 0;

public int maxDepth(TreeNode root) {
maxDepthHelper(root, 1);
return res;
}

private void maxDepthHelper(TreeNode node, int depth) {
// 基线条件
if (node == null)
return;
// 当前结点为叶子结点时, 刷新最大深度
if (node.left == null && node.right == null)
res = Math.max(res, depth);
// 递归左右子结点
maxDepthHelper(node.left, depth + 1);
maxDepthHelper(node.right, depth + 1);
}
}
```

Python:

```class Solution:

def maxDepth(self, root: TreeNode) -> int:
self.max_depth = 0 # 记录最大深度
maxDepthHelper(root, 1)
return max_depth

def maxDepthHelper(self, node: TreeNode, depth: int):
#  基线条件
if not node:
return
# 当前结点为叶子结点时, 刷新最大深度
if not (node.left or node.right):
self.max_depth = max(self.max_depth, depth)
# 递归左右子结点
maxDepthHelper(node.left, depth+1)
maxDepthHelper(node.right, depth+1)
```

0 条评论

• ### leetcode 104 Maximum Depth of Binary Tree二叉树求深度

Maximum Depth of Binary Tree Total Accepted: 63668 Total Submissions: 141121 ...

• ### 【关关的刷题日记62】Leetcode 104. Maximum Depth of Binary Tree

关关的刷题日记62 – Leetcode 104. Maximum Depth of Binary Tree 题目 Given a binary tree, f...

• ### 【leetcode系列】104. 二叉树的最大深度

https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/description/

• ### Js算法与数据结构拾萃（4）：二叉树

因此只要答对这道题，你就可以超越世界级大牛，问鼎码林之巅（逃） 导读： •二叉树知识重点•二叉树深度不一，因此天生适用递归，因此可用递归处理•判断两树相等•翻转...

• ### [LeetCode] Maximum Depth of Binary Tree

链接：https://leetcode.com/submissions/detail/136407355/ 难度：Easy 题目：104. Maximum ...

• ### Python3刷题系列（四）

https://leetcode.com/problems/happy-number/

• ### ​LeetCode刷题实战111：二叉树的最小深度

算法的重要性，我就不多说了吧，想去大厂，就必须要经过基础知识和业务逻辑面试+算法面试。所以，为了提高大家的算法能力，这个公众号后续每天带大家做一道算法题，题目就...

• ### [Leetcode][二叉树]相关题目汇总/分析/总结

前中后三种序列，递归都是一样的理解。迭代的话，前后两个可以互相理解。中序需要单独理解。当然我认为可能我还没有理解透彻。

• ### 打卡群2刷题总结1012——二叉树的最大深度

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

• ### LeetCode：104_Maximum Depth of Binary Tree | 二叉树的最大深度 | Easy

要求：求二叉树的深度（二叉树的深度为最远叶子节点到根节点的距离，即根节点到最远叶子节点的距离） Given a binary tree, find its ma...

• ### 3道题彻底搞定：套路解决递归问题

相信不少同学和我一样，在刚学完数据结构后开始刷算法题时，遇到递归的问题总是很头疼，而一看解答，却发现大佬们几行递归代码就优雅的解决了问题。从我自己的学习经历来看...

• ### LeetCode: Maximum Depth of Binary Tree

Given a binary tree, find its maximum depth.

• ### 深搜和广搜问题-LeetCode 110、104（DFS, BFS）

给定一个二叉树，找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。

• ### Tree - 104. Maximum Depth of Binary Tree

Given a binary tree, find its maximum depth.

• ### 【leetcode刷题】T117-二叉树的最大深度

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

• ### 每天一道leetcode-104.二叉树的最大深度

今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426

• ### LeetCode：111_Minimum Depth of Binary Tree | 二叉树的最小深度 | Easy

要求：此题正好和Maximum Depth of Binary Tree一题是相反的，即寻找二叉树的最小的深度值：从根节点到最近的叶子节点的距离。 结题思路：和...