104.二叉树的最大深度
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
一开始卡了我蛮久的,后来想通了,可以用层次遍历做,每做完一层,最大深度 + 1 即可。
class Solution {
public int maxDepth(TreeNode root) {
int maxDepth = 0;
if (root == null) {
return maxDepth;
}
Deque<TreeNode> deque = new ArrayDeque<TreeNode>();
//层次遍历当前树,一层深度+1
deque.offer(root);
while (!deque.isEmpty()) {
//这句话是核心, size是控制每层有多少元素的变量
int size = deque.size();
maxDepth++;
while (size > 0) {
root = deque.poll();
if (root.left != null) {
deque.offer(root.left);
}
if (root.right != null) {
deque.offer(root.right);
}
size--;
}
}
return maxDepth;
}
}