当前位置: 首页 > news >正文

【LeetCode Hot100 | 每日刷题】二叉树的层序遍历

题目:

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例 2:

输入:root = [1]
输出:[[1]]

示例 3:

输入:root = []
输出:[]

难点:

需要把每一层的节点值都单独存储到一个list集合中,也就是最后返回结果需要是List<List<Integer>>类型的。

思路:

对该树进行BFS,利用Java的ArrayDeque队列,每一层单独来一次循环以该层的节点数为循环截止条件。

过程如下:

可以看到,在 while 循环的每一轮中,都是将当前层的所有结点出队列,再将下一层的所有结点入队列,这样就实现了层序遍历。 

Java代码:

class Solution {public List<List<Integer>> levelOrder(TreeNode root) {ArrayList<List<Integer>>res=new ArrayList<>();Queue<TreeNode>qu=new ArrayDeque<>();if(root!=null){qu.add(root);}while(!qu.isEmpty()){List<Integer>list=new ArrayList<>();int n=qu.size();for(int i=0;i<n;i++){TreeNode node=qu.poll();list.add(node.val);if(node.left!=null){qu.add(node.left);}if(node.right!=null){qu.add(node.right);}}res.add(list);}return res;}
}

相关文章:

  • 二叉树与堆排序(概念|遍历|实现)
  • [人机交互]理解用户
  • LightGBM算法原理及Python实现
  • 提示词工程:通向AGI时代的人机交互艺术
  • 从零实现基于Transformer的英译汉任务
  • 高并发PHP部署演进:从虚拟机到K8S的DevOps实践优化
  • 机器学习 day6 -线性回归练习
  • 【Part 2安卓原生360°VR播放器开发实战】第三节|实现VR视频播放与时间轴同步控制
  • CentOS虚拟机固定ip以及出现的问题
  • 引用第三方自定义组件——微信小程序学习笔记
  • 【机器学习-线性回归-6】机器学习中的维度:从特征工程到降维艺术
  • DOCX转PDF怎么操作最简单?快速将DOCX转换为专业PDF文档
  • 【计算机网络-应用层】HTTP服务器原理理解以及C++编写
  • (提升)媒体投稿技能
  • 电商双11美妆数据分析
  • Qt/C++面试【速通笔记七】—Qt中为什么new QWidget不需要手动调用delete?
  • IdeaVim配置指南
  • 嵌入式openharmony标准鸿蒙系统驱动开发基本原理与流程
  • 【东枫科技】代理英伟达产品:DPU
  • 【Python pass 语句】
  • 李云泽:将加快出台与房地产发展新模式相适配的系列融资制度
  • 商务部新闻发言人就中美经贸高层会谈答记者问
  • 指挥家高健:东方市民音乐会“高贵不贵”,我愿意常来
  • 五角大楼要裁一批四星上将
  • 中标多家学校采购项目的App查成绩需付费?涉事公司回应
  • 新华社:赵心童世锦赛夺冠,中国书写斯诺克运动新历史