跃迁引擎

空気を読んだ雨降らないでよ

iOS Research & Development


二叉树的深度

剑指 Offer 55 - I. 二叉树的深度

题目

输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。

例如:

给定二叉树 [3,9,20,null,null,15,7]

1
2
3
4
5
  3
/ \
9 20
/ \
15 7

返回它的最大深度 3 。

提示:

节点总数 <= 10000

题解

这题 so easy,三十秒搞定,直接看代码注释吧,我想无需解释了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 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) {
// 递归退出条件:达到节点尽头
if (root == null) {
// 为什么这里是返回0呢,因为递归是自底向上返回结果的,尽头就是返回值的起点,也就是0层深度
return 0;
}
// 从底向上递归,最终会返回左右节点各自的深度,这里加1是为了可以累计深度,否则返回值永远是0
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
}
}
最近的文章

对称的二叉树

剑指 Offer 28. 对称的二叉树 …

, , 开始阅读
更早的文章

平衡二叉树

剑指 Offer 55 - II. 平衡二叉树 …

, 开始阅读
comments powered by Disqus