Leetcode104.二叉树的最大深度

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:

tmp-tree

1
2
输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

1
2
输入:root = [1,null,2]
输出:2

提示:

  • 树中节点的数量在 [0, 104] 区间内。
  • -100 <= Node.val <= 100

解法:递归

1
2
3
4
5
6
7
8
9
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;
}
}

解法:迭代(广度优先搜索)

每一次迭代都删去上一层的所有节点,并且保存下一层的所有节点。这样每次迭代都代表深度增加。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public int maxDepth(TreeNode root) {
if (root == null)return 0;
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
int depth = 0;
queue.offer(root);

while(!queue.isEmpty()){
int size = queue.size();
while (size > 0){
TreeNode node = queue.poll();
if (node.left != null)queue.offer(node.left);
if (node.right != null)queue.offer(node.right);
size --;
}
depth += 1;
}
return depth;

}
}