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

相关推荐
人工干智能2 小时前
科普:在Windows个人电脑上使用Docker的极简指南
windows·docker·容器
夜猫逐梦7 小时前
【Lua】Windows 下编写 C 扩展模块:VS 编译与 Lua 调用全流程
c语言·windows·lua
网硕互联的小客服8 小时前
Windows 2012 系统如何修改网卡DNS?
windows
zhangfeng11339 小时前
在 R 语言里,`$` 只有一个作用 按名字提取“列表型”对象里的单个元素 对象 $ 名字
开发语言·windows·r语言
Cachel wood11 小时前
信息检索、推荐系统模型排序质量指标:AP@K和MAP@K
windows·搜索引擎·json·推荐系统·搜索
_假正经11 小时前
Windows下使用PerfMon进行性能监控并记录日志
windows
Source.Liu12 小时前
【Pywinauto库】10.7 pywinauto.controls.uia_controls控件
windows·python·自动化
小六子成长记12 小时前
【C++】:list容器全面解析(超详细)
c++·windows·list
❀搜不到1 天前
查询 conda + pip 装的包
windows·conda·pip
字符搬运工-蓝天1 天前
Win7环境中离线安装Visual Studio 2017的相关问题
ide·windows·visual studio