题解 | #求二叉树的层序遍历#

求二叉树的层序遍历

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;
    }
}

全部评论

相关推荐

04-13 18:10
门头沟学院 Java
想熬夜的小飞象在秋招:被腾讯挂了后爸妈以为我失联了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务