题解 | #求二叉树的层序遍历#
求二叉树的层序遍历
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; } }