题目
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
![image-20211017124121025](https://gitee.com/cyStudy1997/my-summary/raw/master/img/image-20211017124121025.png)
解法
此题和二叉树的层次遍历类似 不过要设置一个变量记住每层的节点个数
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
//设置一个队列,用来存储二叉树中的元素
Queue<TreeNode> queue = new LinkedList<>();
//最后返回的集合1
List<List<Integer>> finalList = new ArrayList<List<Integer>>();
//添加二叉树根节点
if(root != null){ //这里要注意判断root非空
queue.add(root);
}
while(!queue.isEmpty()){
//用来记录queue的长度,即每层节点的个数
int size = queue.size();
ArrayList<Integer> list = new ArrayList<>();
for(int i=0; i<size; i++){
TreeNode tem = queue.poll(); //队列中弹出元素
list.add(tem.val);
if(tem.left != null){
queue.add(tem.left);
}
if(tem.right != null){
queue.add(tem.right);
}
}
finalList.add(list);
}
return finalList;
}
}