codeTop102:二叉树的层序遍历

前言

在已知BFS的方式后,知道每次从队列中取一个节点,就要将这个节点的所有子节点按照顺序放入队列。

难点在于怎么确定将同一层的节点放在一个数组里面的输出,也就是输出一个二维数组?

解决方法:

每次while循环将队列上轮放入的节点全部取出(之前的普通BFS是每次whie循环只取一个节点)。

java 复制代码
 public  List<List<Integer>> levelOrder(TreeNode root) {
    List<List<Integer>> res = new ArrayList<>();
    if (root == null){
        return res;
    }
    Queue<TreeNode> queue = new LinkedList<>();
    queue.add(root);

    while (!queue.isEmpty()){

        int size = queue.size();
        List<Integer> temp = new ArrayList<>();
        for (int i = 0 ; i < size; i++ ){
            TreeNode target = queue.poll();
            temp.add(target.val);

            if (target.left != null){
                queue.add(target.left);
            }

            if (target.right != null){
                queue.add(target.right);
            }
        }

        res.add(temp);

    }

   return res;
}

相关推荐
分布式存储与RustFS1 小时前
实测!Windows环境下RustFS的安装与避坑指南
人工智能·windows·rust·对象存储·企业存储·rustfs
浪潮IT馆1 小时前
删除Windows系统硬盘的EFI系统分区和恢复分区
windows
我就是你毛毛哥2 小时前
windows启动jmeter
windows·jmeter
取个名字太难了a2 小时前
重写 OpenProcess:绕过 Win32 API,直接进入 NT 内核(Win7 x86)
windows
MyBFuture2 小时前
C# 哈希表与堆栈队列实战指南
开发语言·windows·c#·visual studio
管理大亨2 小时前
Linux vs Windows:五大维度深度对决
linux·arm开发·windows
云技纵横4 小时前
Stream API 从入门到实践:常用操作、易错点与性能建议
开发语言·windows·python
独自归家的兔5 小时前
开发核心问题深度解析:通配符接口 + 第三方数据同步 + 九宫格算法
服务器·windows·microsoft
秋月的私语5 小时前
Windows Forms 多语言开发指南
windows·c#·form
YJlio6 小时前
Windows Sysinternals 文件工具学习笔记(12.10):PendMoves + MoveFile 实战——重启后文件替换的安全姿势
windows·笔记·学习