题目描述:
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
解题思路:
本题可类比第22题:从上往下打印二叉树,这两道题实际上是一回事,只不过这里我们多了一个分行打印的要求,实际上大同小异,稍加修改即可。
在二叉树层次遍历上,我们使用的是队列,借助队列先进先出的性质实现,具体规律:每次打印一个结点时,如果该结点有子结点,则将子结点放到队列的末尾,接下来取出队列的头重复前面的打印动作,直到队列中所有的结点都打印完毕。在此基础上我们考虑这里的分行要求,不难想到我们只要增加两个变量即可:一个用于保存当前层中还没有打印的结点个数,另一个用于记录下一层结点的数目。而使用队列的话,实际上这两个变量可以统一用队列的长度来实现。
举例:
编程实现(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 Print(TreeNode pRoot) {
//思路:使用队列实现
ArrayList res=new ArrayList();
if(pRoot==null)
return res;
Queue queue = new LinkedList(); //借助队列实现
TreeNode root=pRoot;
queue.add(root);
while(!queue.isEmpty()){ //队列不空
//当前队列长度代表当前这一层节点个数
int len=queue.size();
ArrayList row=new ArrayList();
for(int i=0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?