LeetCode-104. 二叉树的最大深度
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
思路
求二叉树的最大深度,其实就是求二叉树的最大层数。而关于层数遍历问题,这里使用深度遍历的话就会造成很多不必要的逻辑操作。 当这颗树很深的时候,深度优先遍历算法时间度很吃亏。 所以对于遍历层数操作,推荐使用广度优先遍历。 这道题刚好要算出的结果是最大层数,所以在对每一层结点进行遍历的时候,只需要累计当前层数,层层操作就行。
从根节点出发,遍历一层,如果某一节点的左孩子或者右孩子存在,则添加到遍历数组中。一层遍历完,计数最大层数+1 如此翻译,则可得代码
代码
public int maxDepth(TreeNode root) {
if(root==null){
return 0;
}
Queue<TreeNode> queue=new LinkedList<>();
queue.offer(root);
int sum=0;
while(!queue.isEmpty()){
int size=queue.size(); //当前层数的结点数目
while(size>0){
TreeNode poll = queue.poll();
if(poll.left!=null){
queue.offer(poll.left);
}
if(poll.right!=null){
queue.offer(poll.right);
}
size--;
}
sum++;
}
return sum;
}
Powered by Waline v2.14.7