1. 输入检查
    if not root:return []
    • 如果根节点为空,直接返回空列表
  2. 初始化

    result = []
    queue = collections.deque([root])
    • result用于存储最终结果
    • queue初始化包含根节点,使用双端队列实现
  3. 主循环

    while queue:level_size = len(queue)level = []
    • 当队列不为空时继续处理
    • level_size记录当前层的节点数量
    • level用于存储当前层的节点值
  4. 处理当前层

    for _ in range(level_size):node = queue.popleft()level.append(node.val)
    • 处理当前层的每个节点
    • 从队列左侧取出节点
    • 将节点值加入当前层列表
  5. 处理子节点

    for child in node.children:queue.append(child)
    • 将当前节点的所有子节点加入队列(下一层)
  6. 存储当前层结果

    result.append(level)

    • 将当前层的值列表加入最终结果
  7. 返回结果

    return result

    • 返回层次遍历结果

具体例子

考虑以下N叉树:


节点结构

  • 节点1:值=1,children=[3,2,4]
  • 节点3:值=3,children=[5,6]
  • 节点2:值=2,children=[]
  • 节点4:值=4,children=[]
  • 节点5:值=5,children=[]
  • 节点6:值=6,children=[]

代码执行步骤

  1. 初始化:

    • result = []
    • queue = [1] (根节点)
  2. 第一轮循环:

    • level_size = 1 (队列中只有节点1)
    • level = []
    • 取出节点1,level = [1]
    • 将节点1的子节点(3,2,4)加入队列: queue = [3,2,4]
    • result =[ [1] ]
  3. 第二轮循环:

    • level_size = 3 (队列中有3,2,4)
    • level = []
    • 取出节点3,level = [3]
    • 将节点3的子节点(5,6)加入队列: queue = [2,4,5,6]
    • 取出节点2,level = [3,2]
    • 节点2没有子节点
    • 取出节点4,level = [3,2,4]
    • 节点4没有子节点
    • queue = [5,6]
    • result = [[1], [3,2,4]]
  4. 第三轮循环:

    • level_size = 2 (队列中有5,6)
    • level = []
    • 取出节点5,level = [5]
    • 节点5没有子节点
    • 取出节点6,level = [5,6]
    • 节点6没有子节点
    • queue = []
    • result = [[1], [3,2,4], [5,6]]
  5. 循环结束:

    • 队列为空,退出循环
    • 返回最终结果: [[1], [3,2,4], [5,6]]

最终输出

这个层次遍历的输出结果是:

 

[ [1], [3,2,4], [5,6] ]

这个结果表示:

  • 第一层(根层): 只有节点1
  • 第二层: 节点3,2,4
  • 第三层: 节点5,6
  1. 初始状态
    • queue = [1]
    • result = []
  2. 第一层处理

    • level_size = 1
    • 处理节点1:
      • level = [1]
      • 加入子节点3,2,4 → queue = [3,2,4]
    • result =[ [1] ]
  3. 第二层处理

    • level_size = 3
    • 处理节点3:
      • level = [3]
      • 加入子节点5,6 → queue = [2,4,5,6]
    • 处理节点2:
      • level = [3,2]
      • 无子节点 → queue = [4,5,6]
    • 处理节点4:
      • level =

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/79661.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/79661.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/79661.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ES】Elasticsearch字段映射冲突问题分析与解决

在使用Elasticsearch作为搜索引擎时,经常会遇到一些映射(Mapping)相关的问题。本文将深入分析字段映射冲突问题,并通过原生的Elasticsearch API请求来复现和解决这个问题。 问题描述 在实际项目中,我们遇到以下错误: Transport…

小红书怎么看自己ip地址?小红书更改ip地址教学

在社交媒体高度透明的今天,小红书等平台公开用户IP属地的功能引发了广泛讨论。无论是出于隐私保护的担忧,还是因需要切换属地,许多用户都迫切想知道:能否通过手动修改“伪装”所在地? 事实上,IP属地可能影…

深入理解 Java 观察者模式:原理、实现与应用

在软件开发领域,设计模式堪称开发者智慧的凝练结晶,它们为解决各类常见编程难题提供了行之有效的方案。观察者模式(Observer Pattern)作为行为型设计模式的重要一员,在处理对象间依赖关系与事件通知方面表现卓越。本文…

网络原理 TCP/IP

1.应用层 1.1自定义协议 客户端和服务器之间往往进行交互的是“结构化”数据,网络传输的数据是“字符串”“二进制bit流”,约定协议的过程就是把结构化”数据转成“字符串”或“二进制bit流”的过程. 序列化:把结构化”数据转成“字符串”…

2025年5月HCIP题库(带解析)

某个ACL规则如下:则下列哪些IP地址可以被permit规则匹配: rule 5 permit ip source 10.0.2.0 0.0.254.255 A、10.0.4.5 B、10.0.5.6 C、10.0.6.7 D、10.0.2.1 试题答案:A;C;D 试题解析: 10.0.2.000001010.00000000.00000010.0000000…

【Redis | 基础总结篇 】

目录 前言: 1.Redis的介绍: 2.Redis的类型与命令: 3.Redis的安装: 3.1.Windows版本 3.2.Linux版本 4.在java中使用Redis: 4.1.介绍 4.2.Jedis 4.3.Spring Data Redis 前言: 本篇主要讲述了Redis的…

38.前端代码拆分

因为前端代码之前是一体编写的,所以为了方便对代码进行了拆分 之前是这样的: 为了更加规范,所以拆分成vue、util、store、api等部分: css: store: 拆分后的大致界面为: 其实还有点别扭需要后续再调整

tinyrenderer笔记(Shader)

tinyrenderer个人代码仓库:tinyrenderer个人练习代码 前言 现在我们将所有的渲染代码都放在了 main.cpp 中,然而在 OpenGL 渲染管线中,渲染的核心逻辑是位于 shader 中的,下面是 OpenGL 的渲染管线: 蓝色是我们可以自…

C++高性能内存池

目录 1. 项目介绍 1. 这个项目做的是什么? 2. 该项目要求的知识储备 2. 什么是内存池 1. 池化技术 2. 内存池 3. 内存池主要解决的问题 4.malloc 3. 先设计一个定长的内存池 4.高并发内存池 -- 整体框架设计 5. 高并发内存池 -- thread cache 6. 高并发内存池 -- …

LintCode407-加一,LintCode第479题-数组第二大数

第407题: 描述 给定一个非负数,表示一个数字数组,在该数的基础上1,返回一个新的数组。 该数字按照数位高低进行排列,最高位的数在列表的最前面. 样例 1: 输入:[1,2,3] 输出:[1,2,4] 样例 …

SMT贴片钢网精密设计与制造要点解析

内容概要 SMT贴片钢网作为电子组装工艺的核心载体,其设计与制造质量直接影响焊膏印刷精度及产品良率。本文系统梳理了钢网全生命周期中的15项关键技术指标,从材料选择、结构设计到工艺控制构建完整技术框架。核心要点涵盖激光切割精度的微米级调控、开口…

OpenCV进阶操作:角点检测

文章目录 一、角点检测1、定义2、检测流程1)输入图像2)图像预处理3)特征提取4)角点检测5)角点定位和标记6)角点筛选或后处理(可选)7)输出结果 二、Harris 角点检测&#…

江苏正力新能Verify认知能力测评笔试已通知 | SHL测评题库预测题 | 华东同舟求职讲求职

江苏正力新能入职笔试通知,Verify(认知能力测评),用时约46分钟,其中正式测试部分计时36分钟;时间到了试卷会自动提交,请合理安排答题时间!前面有10分钟练习时间,可以略过…

在若依里创建新菜单

首先打开左侧菜单栏的系统管理,然后点击菜单管理 可以点击左上角的新增,也可以点击右侧对应目录的新增 这里我选择了右侧的新增,即在系统管理目录下新增菜单 其中的组件路径就是写好的页面的路径 (从views的下一级开始写即可&…

【AI知识库云研发部署】RAGFlow + DeepSeek

可以分成两台机器部署,一台gpu,一台cpu,cpu的机器运行ragflow的主程序,使用模型时才访问gpu。当然全部在一台机器上部署是完全ok的。全文没有复杂的环境问题 gpu 安装screen:yum install screen 配置ollama: 下载官方安装脚本并执行: curl -fsSL https://ollama.co…

Java后端开发day40--异常File

(以下内容全部来自上述课程) 异常 异常:异常就是代表程序出现的问题 1. 异常的分类 1.1 Error 代表的是系统级别的错误(属于严重问题) 系统一旦出现问题,sun公司会把这些错误封装成Error对象。 Error…

算法思想之深度优先搜索(DFS)、递归以及案例(最多能得到多少克黄金、精准核酸检测、最富裕的小家庭)

深度优先搜索(DFS)、递归 深度优先搜索(Depth First Search,DFS)是一种用于遍历或搜索树或图的算法。在 DFS 算法中,从起始节点开始,沿着一条路径尽可能深地访问节点,直到到达叶子节…

Spark,HDFS客户端操作

hadoop客户端环境准备 找到资料包路径下的Windows依赖文件夹,拷贝hadoop-3.1.0到非中文路径(比如d:\hadoop-3.1.0) ① 打开环境变量 ② 在下方系统变量中新建HADOOP_HOME环境变量,值就是保存hadoop的目录。 效果如下: ③ 配置Pa…

共享会议室|物联网解决方案:打造高效、智能的会议空间!

在数字化转型的浪潮下,企业、园区、公共机构的会议室面临诸多痛点,如何通过物联网技术实现会议室资源的智能调度、环境设备的自动化控制以及用户体验的全面升级?本文将结合行业实践与技术方案,探讨基于物联网的共享会议室解决方案…

ts bug 找不到模块或相应类型的声明,@符有红色波浪线

解决方法&#xff1a;在env.d.ts文件中添加以下代码&#xff0c;这段代码是一个 TypeScript 的声明文件&#xff0c;用于让 TypeScript 知道如何处理 Vue 单文件组件&#xff08;.vue 文件&#xff09;的导入。 /// <reference types"vite/client" /> // 声明…