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

数据结构与算法——Java实现 20.习题——二叉树层序遍历

认真的人改变自己,执着的人改变命运

                                                —— 24.9.27

102. 二叉树的层序遍历

示例 1:

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

示例 2:

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

示例 3:

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

思路

对二叉树每一层进行遍历,知道遍历到每一个结点的叶子节点为止

叶子节点即左孩子右孩子都为null时的节点是叶子节点

从左到右每层进行遍历,每遍历一个节点,将节点存入队列中,最终返回队列

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> res = new ArrayList<>();if (root == null) {return res;}LinkedList queue = new LinkedList();queue.offer(root);int count1 = 1;while (!queue.isEmpty()) {List<Integer> level = new ArrayList<>();int count2 = 0;for (int i = 0; i < count1; i++) {TreeNode node = (TreeNode) queue.poll();level.add(node.val);if (node.left != null) {queue.offer(node.left);count2++;}if (node.right != null) {queue.offer(node.right);count2++;}}res.add(level);count1 = count2;}return res;}
}

相关文章:

  • Iceberg 基本操作和快速入门
  • Linux中的tr命令详解
  • C#进阶-读写Excel常用框架及其使用方式
  • STM32嵌入式编程学习到提高:【5】delay函数
  • 【C++】托管类和托管函数
  • jenkins分布式构建
  • C高级(Day21)
  • XPath基础知识点讲解——用于在XML中查找信息的语言
  • [vulnhub] Jarbas-Jenkins
  • numpy is not available
  • 982. 按位与为零的三元组
  • UI设计师面试整理-工具和技术技能
  • list(二) (list模拟实现)
  • HOJ网站开启https访问 申请免费SSL证书 部署证书详细操作指南
  • CANopen开源库canfestival的移植
  • [iOS]Core Data浅析一 -- 启用Core Data
  • const let
  • Debian下无root权限使用Python访问Oracle
  • Java Agent 学习笔记
  • java正则表式的使用
  • java中具有继承关系的类及其对象初始化顺序
  • nginx 负载服务器优化
  • webgl (原生)基础入门指南【一】
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • windows下使用nginx调试简介
  • 从tcpdump抓包看TCP/IP协议
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 前端存储 - localStorage
  • 小试R空间处理新库sf
  • 一个完整Java Web项目背后的密码
  • ionic异常记录
  • puppet连载22:define用法
  • ​configparser --- 配置文件解析器​
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (3)llvm ir转换过程
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (vue)页面文件上传获取:action地址
  • (二)WCF的Binding模型
  • (二)构建dubbo分布式平台-平台功能导图
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (六)软件测试分工
  • (十六)、把镜像推送到私有化 Docker 仓库
  • (一)插入排序
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .NET Remoting学习笔记(三)信道
  • .net 程序发生了一个不可捕获的异常
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验