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

LeetCode热题100--102. 二叉树的层序遍历--中等

1. 题目

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

示例 1:
在这里插入图片描述
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例 2:
输入:root = [1]
输出:[[1]]

示例 3:
输入:root = []
输出:[]

2. 题解

/*** 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) {Queue<TreeNode> queue = new LinkedList<>();List<List<Integer>> res = new ArrayList<>();if (root != null) queue.add(root);while (!queue.isEmpty()) {List<Integer> tmp = new ArrayList<>();for(int i = queue.size(); i > 0; i--) {TreeNode node = queue.poll();tmp.add(node.val);if (node.left != null) queue.add(node.left);if (node.right != null) queue.add(node.right);}res.add(tmp);}return res;}
}

3. 解析

出自:102. 二叉树的层序遍历(广度优先遍历,清晰图解)

  1. 1-4行:定义了TreeNode类,用于创建具有值、左子节点和右子节点的二叉树节点。

  2. 6-8行:声明并初始化一个队列来存储待处理的节点,以及一个结果列表来记录层次遍历的结果。如果根节点不为空,则将其加入队列中。

  3. 10-24行:开始循环,直到队列为空。在每次迭代中,创建一个新的临时列表tmp并初始化其索引值为与当前队列中的元素数量相同。这是为了记录每一层的节点数。然后从队列头部移除节点,将其值加入到tmp中,并将它的左子节点和右子节点(如果存在)添加至队列尾部以供下一轮处理。最后,将这个临时列表tmp加入结果列表res中。

  4. 26行:返回包含所有层级节点的值的二维数组res。

http://www.dtcms.com/a/349355.html

相关文章:

  • 什么是JSON-RPC 2.0,在项目中应该怎么使用
  • 09-数据存储与服务开发
  • GPIO子系统自主实现(简单版)
  • C++ static 关键字面试深度解析
  • 匹配网络处理不平衡数据集的6种优化策略:有效提升分类准确率
  • 【每天一个知识点】大模型训推一体机
  • RK3128 Android 7.1 进入深度休眠流程分析
  • Apache Maven 3.1.1 (eclipse luna)
  • Portswigger靶场之 Blind SQL injection with time delays通关秘籍
  • 维度建模 —— 雪花模型 和 星型模型的优缺点
  • 异常记录-神通数据库-已解决
  • go-redis库使用总结
  • jasperreports 使用
  • Vmware centos系统中通过docker部署dify,网络超时和磁盘容量解决方案
  • 解决getLocation获取当前的地理位置,报错:getLocation:fail auth deny及方法封装
  • 容易忽视的TOS无线USB助手配网和接入USB使用: PC和TOS-WLink需要IP畅通,
  • 社群团购平台与定制开发开源AI智能名片S2B2C商城小程序的融合创新研究
  • 解构 Spring Boot “约定大于配置”:从设计哲学到落地实践
  • 在Excel和WPS表格中拼接同行列对称的不连续数据
  • XC95144XL-10TQG144I Xilinx XC9500XL 高性能 CPLD
  • 信贷模型域——清收阶段模型(贷后模型)
  • 关于内存泄漏的一场讨论
  • [Android] 人体细胞模拟器1.5
  • leetcode 238 除自身以外数组的乘积
  • 可信医疗大数据来源、院内数据、病种数据及编程使用方案分析
  • iOS18报错:View was already initialized
  • 生产ES环境如何申请指定索引模式下的数据查看权限账号
  • 【C语言】一些常见概念
  • git开发基础流程
  • 以结构/序列/功能之间的关系重新定义蛋白质语言模型的分类:李明辰博士详解蛋白质语言模型