题解 | #求二叉树的层序遍历#
求二叉树的层序遍历
https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode类
* @return int整型ArrayList<ArrayList<>>
*/
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
//创建保存层序遍历的集合
ArrayList<ArrayList<Integer>>list=new ArrayList<>();
//根节点为空直接返回
if(root==null){
return list;
}
//创建队列,利用队列的特性先进先出来进行每层的遍历
Queue<TreeNode> queue=new ArrayDeque<TreeNode>();
//将根节点添加进去
queue.add(root);
//当队列不为空
while(!queue.isEmpty()){
//创建保存每行的遍历结果
ArrayList<Integer> row=new ArrayList<>();
//获取当前行的元素个数用于循环
int size=queue.size();
//对当前层的元素进行遍历
for(int i=0;i<size;i++){
//从队列获取当前层的一个元素
TreeNode cur=queue.poll();
//获取后添加到当前层的集合中
row.add(cur.val);
//对于每个当前层的元素进行判断是否有左右子树,如果有则添加进去
if(cur.left!=null){
queue.add(cur.left);
}
if(cur.right!=null){
queue.add(cur.right);
}
}
//将当前层的遍历结果进行保存
list.add(row);
}
return list;
}
}
SHEIN希音公司福利 318人发布