题意:
题解:
涉及到java中的队列的知识点
队列先进先出
能达到 左结点先进 ,左结点先出,顺序上就是从左到右
java中队列的定义
Queue<> queue=new linkedList<>();
本质上是一个链表+数组
方法:
添加 queue.add() 当容器满了 无法添加 会报异常
添加 queue.offer() 当容器满了 不会报异常 只会返回false
移除队首 queue.remove() 移除第队首元素 如果为空 为报异常
移除+返回队首 queue.poll() 移除队首元素 并可以返回队首元素 如果为空 不会报异常 会返回一个null
返回队首 queue.peek();
判断是否为空 queue.isEmpty()
查询队首并不删除 queue.element();
代码:
class Solution {
public List> levelOrder(TreeNode root) {
//广度优先遍历
//利用 队列
List> res=new ArrayList<>();
if(root==null) return res;
Queue queue=new linkedList<>();
queue.add(root);
TreeNode tem;
List list;
int count;
while(!queue.isEmpty()){
count=queue.size();
list=new ArrayList<>();
while(count>0){
tem=queue.peek();//弹出 队首元素
queue.remove();
//将tem结点孩子结点压入 队列
if(tem.left!=null) queue.add(tem.left);
if(tem.right!=null) queue.add(tem.right);
--count;
list.add(tem.val);
}
res.add(list);
}
return res;
}
}



