题目描述:

  从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

  解题思路:

  本题可类比第22题:从上往下打印二叉树,这两道题实际上是一回事,只不过这里我们多了一个分行打印的要求,实际上大同小异,稍加修改即可。

  在二叉树层次遍历上,我们使用的是队列,借助队列先进先出的性质实现,具体规律:每次打印一个结点时,如果该结点有子结点,则将子结点放到队列的末尾,接下来取出队列的头重复前面的打印动作,直到队列中所有的结点都打印完毕。在此基础上我们考虑这里的分行要求,不难想到我们只要增加两个变量即可:一个用于保存当前层中还没有打印的结点个数,另一个用于记录下一层结点的数目。而使用队列的话,实际上这两个变量可以统一用队列的长度来实现。

  举例:

![](https://img2018.cnblogs.com/blog/1608161/201905/1608161-20190520124806385-473179174.png)

  编程实现(Java):

import java.util.*;
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null; public TreeNode(int val) {
this.val = val;
}
}
public class Solution {
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
//思路:使用队列实现
ArrayList<ArrayList<Integer>> res=new ArrayList<>();
if(pRoot==null)
return res;
Queue<TreeNode> queue = new LinkedList<>(); //借助队列实现
TreeNode root=pRoot;
queue.add(root);
while(!queue.isEmpty()){ //队列不空
//当前队列长度代表当前这一层节点个数
int len=queue.size();
ArrayList<Integer> row=new ArrayList<>();
for(int i=0;i<len;i++){ //循环次数,也就是当前这一层节点个数
TreeNode temp=queue.poll();
if(temp.left!=null)
queue.add(temp.left);
if(temp.right!=null)
queue.add(temp.right);
row.add(temp.val);
}
res.add(row);
}
return res;
}
}

最新文章

  1. 以太坊智能合约Hello World示例程序
  2. URL,URI和URN的理解
  3. mac PHP配置
  4. centos 7 升级后yum install出现Exiting on user cancel
  5. web服务器长连接
  6. SQL中Group By 的使用
  7. 使用maven, myeclipse工具构建spring mvc项目
  8. [转载]EF Code First 学习笔记:约定配置
  9. 解决ashx文件下的Session“未将对象引用设置到对象的实例”
  10. Pair project(刘昊岩11061156 黄明源11061186)
  11. (转载)mysql查询今天、昨天、7天、近30天、本月、上一月数据
  12. vi 替换命令“找不到模式”解决
  13. String转int数字格式异常问题
  14. 6.前端基于react,后端基于.net core2.0的开发之路(6) 服务端渲染(SSR)
  15. vue-cli 构建的项目中 如何使用less
  16. 1-蓝桥杯套路-java
  17. JS prototype chaining(原型链)整理中&#183;&#183;&#183;&#183;&#183;&#183;
  18. Python&#160;文件复制&amp;按目录树结构拷贝&amp;批量删除目录及其子目录下的文件
  19. 环境部署(七):linux下Jenkins+Git+JDK持续集成
  20. 如何调试 Android 上 HTTP(S) 流量

热门文章

  1. Linux环境变量设置命令export(转)
  2. AngularJS:让submit重新生效
  3. 027依据前序遍历和中序遍历,重建二叉树(keep it up)
  4. 微信小程序初探(一、简单的数据请求)
  5. WebSocket在Asp.Net中的例子
  6. B1192 [HNOI2006]超级英雄Hero 二分图匹配
  7. P3387 【模板】缩点 tarjan
  8. maven变量
  9. hdu 5823 color II —— 子集DP
  10. JS页面刷新保持数据不丢失