从上到下打印二叉树,又称为二叉树的广度优先搜索(BFS)。
BFS通常借助队列先进先出的特性去实现。
java:
//队列先进先出的特性
Queue
//定义一个接受结果的容器
ArrayList> list = new ArrayList<>();
特例处理: 当根节点为空,则返回空列表 [] ;
if(root != null){
queue.add(root);
}
BFS 循环: 当队列 queue 为空时跳出;
while(!queue.isEmpty()){
//由于该题是将每一层放进一个集合所以将每次循环看成一层的话
//每层需要初始化一个集合来接受
//新建一个临时列表 tmp ,用于存储当前层打印结果;
ArrayList
//此时队列的长度就是该集合的内容
for(int i = queue.size();i > 0; i--){
//将队列的头部元素弹出
TreeNode cur = queue.poll();
temp.add(cur.val);
//判断当前节点的左右子节点是否为空
//不为空则继续补入队列完成下一次循环
if(cur.left != null){
queue.add(cur.left);
}
if(cur.right != null){
queue.add(cur.right);
}
}
list.add(temp);
}
return list;



