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

算法练习(力扣-BFS)——102. 二叉树的层序遍历

题目描述(简要概括)

题目链接:102. 二叉树的层序遍历 - 力扣(LeetCode)

题目要求对给定的二叉树进行层序遍历(从上到下,从左到右),并返回遍历的结果。层序遍历是一种基于广度优先搜索(BFS)的遍历方式,通常使用队列来实现。

输入输出

  • 输入:二叉树的根节点 root

  • 输出:一个二维列表,表示每一层的节点值。

解题思路

  1. 使用队列实现 BFS

    • 初始化一个队列,将根节点加入队列。

    • 每次从队列中取出一层的节点,记录它们的值,并将它们的子节点加入队列。

    • 重复上述过程,直到队列为空。

  2. 记录每一层的节点值

    • 使用一个列表来存储每一层的节点值。

    • 最终将所有层的节点值组合成一个二维列表作为结果。


代码详细解析

from collections import dequeclass TreeNode:def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightdef list_to_tree(data):if not data:return Noneroot = TreeNode(data[0])queue = [root]index = 1while queue and index < len(data):node = queue.pop(0)if index < len(data) and data[index] is not None:node.left = TreeNode(data[index])queue.append(node.left)index += 1if index < len(data) and data[index] is not None:node.right = TreeNode(data[index])queue.append(node.right)index += 1return rootdef levelOrder(root):if not root:return []result = []queue = deque([root])while queue:level_size = len(queue)current_level = []for _ in range(level_size):node = queue.popleft()current_level.append(node.val)if node.left:queue.append(node.left)if node.right:queue.append(node.right)result.append(current_level)return resultif __name__ == "__main__":data = [3, 9, 20, None, None, 15, 7]root = list_to_tree(data)result = levelOrder(root)print(result)  # 输出:[[3], [9, 20], [15, 7]]

示例解析

假设输入的二叉树如下:

复制

    3/ \9  20/  \15   7
  1. 初始化

    • 队列:[3]

    • 结果:[]

  2. 第一层(根节点)

    • 当前层:[3]

    • 队列:[9, 20]

    • 结果:[[3]]

  3. 第二层

    • 当前层:[9, 20]

    • 队列:[15, 7]

    • 结果:[[3], [9, 20]]

  4. 第三层

    • 当前层:[15, 7]

    • 队列:[]

    • 结果:[[3], [9, 20], [15, 7]]

  5. 返回结果

    • [[3], [9, 20], [15, 7]]


总结

通过使用队列实现 BFS,我们可以轻松地完成二叉树的层序遍历。每层的节点值按顺序加入结果列表,最终返回一个二维列表。希望这个解析对你有帮助!如果有任何问题,欢迎随时提问。

相关文章:

算法练习(力扣-BFS)——102. 二叉树的层序遍历

题目描述&#xff08;简要概括&#xff09; 题目链接&#xff1a;102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 题目要求对给定的二叉树进行层序遍历&#xff08;从上到下&#xff0c;从左到右&#xff09;&#xff0c;并返回遍历的结果。层序遍历是一种基…...

Jetson Agx Orin平台preferred_stride调试记录--1924x720图像异常

1.问题描述 硬件: AGX Orin 在Jetpack 5.0.1和Jetpack 5.0.2上测试验证 图像分辨率在1920x720和1024x1920下图像采集正常 但是当采集图像分辨率为1924x720视频时,图像输出异常 像素格式:yuv_uyvy16 gstreamer命令如下 gst-launch-1.0 v4l2src device=/dev/video0 ! …...

nlp|微调大语言模型初探索(2),训练自己的聊天机器人

前言 上篇文章记录了具体的微调语言大模型步骤&#xff0c;以及在微调过程中可能遇见的各种报错&#xff0c;美中不足的是只是基于开源数据集的微调&#xff0c;今天来记录一下怎么基于自己的数据集去微调大语言模型&#xff0c;训练自己的智能机器人&#xff01;&#xff01;&…...

win11安装wsl报错:无法解析服务器的名称或地址(启用wsl2)

1. 启用wsl报错如下 # 查看可安装的 wsl --install wsl --list --online此原因是因为没有开启DNS的原因&#xff0c;所以需要我们手动开启DNS。 2. 按照如下配置即可 Google的DNS&#xff08;8.8.8.8和8.8.4.4) 全国通用DNS地址 (114.114.114.114) 3. 运行以下命令来重启 WSL…...

Gentleman:优雅的Go语言HTTP客户端工具包

gentlemen介绍&#xff0c;特点等 插件驱动架构&#xff1a;Gentleman的核心特点是其插件系统&#xff0c;允许用户注册和重用各种自定义插件&#xff0c;如重试策略或动态服务器发现&#xff0c;以增强HTTP客户端的功能。 中间件层&#xff1a;项目内置了一个上下文感知的层次…...

解锁豆瓣高清海报(三)从深度爬虫到URL构造,实现极速下载

脚本地址: 项目地址: Gazer PosterBandit_v2.py 前瞻 之前的 PosterBandit.py 是按照深度爬虫的思路一步步进入海报界面来爬取, 是个值得学习的思路, 但缺点是它爬取慢, 仍然容易碰到豆瓣的 418 错误, 本文也会指出彻底解决旧版 418 错误的方法并提高爬取速度. 现在我将介绍…...

IDEA单元测试插件 SquareTest 延长试用期权限

SquareTest是一款强大的IDEA单元测试生成插件工具&#xff0c;具体使用方法就不过多介绍了&#xff0c;这里主要介绍变更试用期&#xff0c;方便大家使用 配置信息 我的电脑安装前提配置条件 IntelliJ IDEA 2023.2windows 系统 软件安装 IntelliJ IDEA 直接安装插件Squar…...

PLC的五个学习步骤

五个学习步骤详解&#xff1a; 1. 夯实电气基础 (第一步) 核心思想: PLC控制技术是建立在传统电气控制技术之上的&#xff0c;因此扎实的电气基础至关重要。学习内容: 电气元件原理: 深入理解继电器、接触器、按钮、三相异步电机等常用电气元件的工作原理。这是理解电气控制回…...

深度学习05 ResNet残差网络

目录 传统卷积神经网络存在的问题 如何解决 批量归一化BatchNormalization, BN 残差连接方式 ​残差结构 ResNet网络 ResNet 网络是在 2015年 由微软实验室中的何凯明等几位大神提出&#xff0c;斩获当年ImageNet竞赛中分类任务第一名&#xff0c;目标检测第一名。获得CO…...

卷积神经网络CNN

目录 一、CNN概述 二、图像基础知识 三、卷积层 3.1 卷积的计算 3.2 Padding 3.3 Stride 3.4 多通道卷积计算 3.5 多卷积核卷积计算 3.6 特征图大小计算 3.7 Pytorch 卷积层API 四、池化层 4.1 池化计算 4.2 Stride 4.3 Padding 4.4 多通道池化计算 4.5 Pytorc…...

Android:播放Rtsp视频流的两种方式

一.SurfaceView Mediaplayer XML中添加SurfaceView: <SurfaceViewandroid:id"id/surface_view"android:layout_width"match_parent"android:layout_height"match_parent"/> Activity代码&#xff1a; package com.android.rtsp;impor…...

web信息泄露 ctfshow-web入门web1-web10

01做题思路 判断做题的思路是读取&#xff0c;写入&#xff0c;还是执行判断大概的类型&#xff0c;有登录逻辑就尝试sql注入&#xff0c;有下载逻辑就尝试文件读取&#xff0c;有源码就做源码审计 02信息泄露及利用 robots.txt 以ctfshow的web1为例&#xff0c;访问robots…...

Log4j在Spring项目中的应用与实践

在现代Java开发中&#xff0c;日志记录是不可或缺的一部分。它不仅帮助开发者调试和监控应用程序的运行状态&#xff0c;还能在出现问题时快速定位原因。今天&#xff0c;我们就来探讨如何在Spring项目中使用Log4j进行日志管理&#xff0c;并通过具体的实例来展示其强大的功能。…...

docker安装mysql:8.0

1.docker源 目前docker国内的源基本上用不了了&#xff0c;建议去淘宝找一找&#xff0c;我整了一个大概是10R一个月。 2.拉取镜像 docker pull mysql:8.0 3.启动容器 命令如下&#xff1a; docker run \-p 3306:3306 \-e MYSQL_ROOT_PASSWORD123456 \-v /home/data/mysq…...

搭建一个 Spring Boot 项目,解决jdk与springboot版本不匹配

搭建一个 Spring Boot 项目 方式一&#xff1a;使用 Spring Initializr Spring Initializr 是一个基于 Web 的工具&#xff0c;用于快速生成 Spring Boot 项目的基础结构。 访问 Spring Initializr 网站&#xff1a;https://start.spring.io/配置项目信息&#xff1a; …...

心心相系:十颗心

心心相系&#xff1a;十颗心 【1】心脏&#xff1b;人心&#xff0c;热心 heart //注&#xff1a;h-通c-或k- warmhearted a.热心的&#xff0c;热心肠的&#xff1b;亲切的a warm-hearted person 为人古道热肠 词根cardi(o)-(heart)&#xff0c;例词&#xff1a;cardiology(…...

ChatGPT行业热门应用提示词案例-AI绘画类

AI 绘画指令是一段用于指导 AI 绘画工具&#xff08;如 DALLE、Midjourney 等&#xff09;生成特定图像的文本描述。它通常包含场景、主体、风格、色彩、氛围等关键信息&#xff0c;帮助 AI 理解创作者的意图&#xff0c;从而生成符合要求的绘画作品。 ChatGPT 拥有海量的知识…...

前端面试手写--虚拟列表

目录 一.问题背景 二.代码讲解 三.代码改装 四.代码发布 今天我们来学习如何手写一个虚拟列表,本文将把虚拟列表进行拆分并讲解,然后发布到npm网站上. 一.问题背景 为什么需要虚拟列表呢?这是因为在面对大量数据的时候,我们的浏览器会将所有数据都渲染到表格上面,但是渲…...

达梦数据库针对慢SQL,收集统计信息清除执行计划缓存

前言&#xff1a;若遇到以下场景&#xff0c;大概率是SQL走错了执行计划&#xff1a; 1、一条SQL在页面上查询特别慢&#xff0c;但拿到数据库终端执行特别快 2、一条SQL在某种检索条件下查询特别慢&#xff0c;但拿到数据库终端执行特别快 此时&#xff0c;可以尝试按照下述步…...

李沐--动手学深度学习 序列模型

1.使用正弦函数和可加性噪声生成序列数据 import torch from torch import nn from d2l import torch as d2l#使用正弦函数和可加性噪声生成序列数据 T 1000 #总共产生1000个点 time torch.arange(1,T1,dtypetorch.float32) x torch.sin(0.01*time) torch.normal(0,0.2,(…...

终极精简方案:3步打造纯净高效的Windows 11系统镜像

终极精简方案&#xff1a;3步打造纯净高效的Windows 11系统镜像 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 在数字时代&#xff0c;系统性能直接影响工作效率…...

HS2-HF Patch终极指南:一键汉化优化你的Honey Select 2游戏体验

HS2-HF Patch终极指南&#xff1a;一键汉化优化你的Honey Select 2游戏体验 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF Patch是专门为《Honey Selec…...

qwen3.6-27B-FP8部署

目录路径按需调整当前根目录/1、环境安装cd /conda create -n vllm-env python3.10 conda activate vllm-env python3 -m venv vllm-env source vllm-env/bin/activate pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 pip inst…...

PaddleOCR-VL-1.5:端到端文档解析与文本识别技术解析

1. 项目背景与技术定位PaddleOCR-VL-1.5是百度飞桨团队推出的新一代文档解析与文本识别解决方案。作为工业级OCR技术的集大成者&#xff0c;这个版本在传统文字识别能力基础上&#xff0c;重点强化了复杂版式文档的结构化解析能力。我在处理金融票据和医疗档案数字化项目时&…...

linux反代

一ddnsgo泛域名解析二...

【云原生Java函数冷启动优化白皮书】:20年SRE亲授毫秒级启动的7个不可跳过的内核级步骤

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;云原生Java函数冷启动的本质与毫秒级目标定义 云原生Java函数的冷启动并非单纯“加载慢”&#xff0c;而是JVM类加载、字节码验证、JIT预热、Spring上下文初始化及依赖注入链式触发的多阶段协同延迟现象…...

【数据驱动】具有稳定性保证的 Hammerstein 系统的数据驱动控制附matlab代码

​✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书…...

告别Keepalived!在Windows Server上用自带NLB给Nginx做高可用,实测踩坑记录

Windows Server NLB实战&#xff1a;用原生方案为Nginx构建高可用集群 当我们在Windows Server上部署Nginx时&#xff0c;通常会面临一个关键问题&#xff1a;如何实现Linux环境下Keepalived那样的高可用方案&#xff1f;微软其实早已在Windows Server中内置了企业级解决方案—…...

三步打造专属AI语音管家:让小爱音箱秒变智能助手

三步打造专属AI语音管家&#xff1a;让小爱音箱秒变智能助手 【免费下载链接】mi-gpt &#x1f3e0; 将小爱音箱接入 ChatGPT 和豆包&#xff0c;改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 你是否曾经对着家里的智能音箱说话&…...

murata村田SCH1633-D01陀螺仪加速计传感器原厂一级代理商分销经销商

村田SCH1633-D01为汽车6DoF传感器树立了新标准 村田SCH1633是一款高性能组合的陀螺仪和加速度计传感器。 这种基于微机电系统(MEMS)的传感器提高了性能、系统集成和总成本优化的基准。 它专为多种汽车应用而设计&#xff0c;包括自动驾驶(AD)、高级驾驶辅助系统(ADAS)、惯性导航…...