二叉树——429,515,116

今天继续做关于二叉树层序遍历的相关题目,一共有三道题,思路都借鉴于最基础的二叉树的层序遍历。

LeetCode429.N叉树的层序遍历

N叉树的层序遍历
这道题不再是二叉树了,变成了N叉树,也就是该树每一个节点的子节点数量不确定,可能为2,可能为1,也可能为3等等。要求也是需要从左到右层序遍历,和二叉树的层序遍历类似,需要改动的地方有,每一个节点出队时,其叶子节点全部存于一个列表中,将这个列表中的全部元素入队即可,不再是将二叉树仅有的两个子节点:左子节点,右子节点入队。

	public static List<List<Integer>> levelOrder(Node root){List<List<Integer>> list=new ArrayList<>();Queue<Node> queue=new LinkedList<>();if (root==null){return list;}else {queue.offer(root);}Node node=root;while (!queue.isEmpty()){int size=queue.size();List<Integer> lst = new ArrayList<>();for (int i = 0; i < size; i++) {node=queue.poll();if (node.children!=null) {for (int j = 0; j < node.children.size(); j++) {queue.offer(node.children.get(j));}}lst.add(node.val);}list.add(lst);}return list;}

LeetCode515.在每个树行中找最大值

在每个树行中找最大值
这道题先层序遍历,可以将每一层的所有元素存入数组,然后比较数组中的所有元素,选出最大值,即为二叉树该层的最大值,如此循环,将二叉树的所有层都遍历完成。

	public static int researchMax(List<Integer> list){int max=list.get(0);for (int i = 0; i < list.size(); i++) {if (max<list.get(i)){max=list.get(i);}}return max;}public List<Integer> largestValues(TreeNode root){List<Integer> list=new ArrayList<>();Queue<TreeNode> queue=new LinkedList<>();if (root==null){return list;}else {queue.offer(root);}TreeNode node;while (!queue.isEmpty()){List<Integer> lst = new ArrayList<>();int size= queue.size();for (int i = 0; i < size; i++) {node=queue.poll();if (node.left!=null){queue.offer(node.left);}if (node.right!=null){queue.offer(node.right);}lst.add(node.val);}list.add(researchMax(lst));}return list;}

LeetCode116.填充每个节点的下一个右侧节点指针

填充每个节点的下一个右侧节点指针
层序遍历,将每一个出队后的节点的next指针指向这时队列的peak。这里一定需要一个计数器,每次进入循环时,记录当前的队列长度,也就是当前树行的节点个数,如果遍历到最后一个节点时,后面没有节点了,这时就需要将next指针指向null值。

	public static Node connect(Node root){Queue<Node> queue=new LinkedList<>();if (root==null){return null;}else {queue.offer(root);}Node node;while (!queue.isEmpty()){int size= queue.size();for (int i = 0; i < size; i++) {node=queue.poll();if (i==size-1){node.next=null;}else {node.next=queue.peek();}if (node.left!=null){queue.offer(node.left);}if (node.right!=null){queue.offer(node.right);}}}return root;}

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

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

相关文章

详解单片机学的是什么?(电子硬件)

大家好&#xff0c;我是山羊君Goat。 单片机&#xff0c;对于每一个硬件行业的从业者或者在校电子类专业的学生&#xff0c;相信对于这个名词都不陌生&#xff0c;但是掌没掌握就另说了。 那单片机到底学的是什么呢&#xff1f; 其实单片机在生活中就非常常见&#xff0c;目前…

JavaScript Navigator:深入理解浏览器导航机制

JavaScript Navigator:深入理解浏览器导航机制 引言 在Web开发中,浏览器导航是用户与网页交互的重要部分。JavaScript Navigator对象提供了丰富的API,允许开发者深入理解并控制浏览器的导航行为。本文将详细介绍JavaScript Navigator对象的功能、使用方法以及在实际开发中…

MoonBit 编译器(留档学习)

MoonBit 编译器 MoonBit 是一个用户友好&#xff0c;构建快&#xff0c;产出质量高的编程语言。 MoonBit | Documentation | Tour | Core This is the source code repository for MoonBit, a programming language that is user-friendly, builds fast, and produces high q…

C# 实现 “Hello World” 教程

.NET学习资料 .NET学习资料 .NET学习资料 C# 作为一种广泛应用于.NET 开发的编程语言&#xff0c;以其简洁、高效和类型安全等特性&#xff0c;深受开发者喜爱。在踏入 C# 编程领域时&#xff0c;编写经典的 “Hello World” 程序是重要的起点&#xff0c;它能帮助我们快速熟…

数据密码解锁之DeepSeek 和其他 AI 大模型对比的神秘面纱

本篇将揭露DeepSeek 和其他 AI 大模型差异所在。 目录 ​编辑 一本篇背景&#xff1a; 二性能对比&#xff1a; 2.1训练效率&#xff1a; 2.2推理速度&#xff1a; 三语言理解与生成能力对比&#xff1a; 3.1语言理解&#xff1a; 3.2语言生成&#xff1a; 四本篇小结…

QT知识点复习

1.qt核心机制 对象树、信号和槽、事件机制 2.对象树的作用 优化了内存回收机制。子对象实例化的时候&#xff0c;被父对象放对象树上&#xff0c;父对象释放内存&#xff0c;子对象也释放内存 3.信号和槽的作用 实现多个组件之间的通讯 4.信号和槽的几种连接方式 1.UI界面提…

数据结构:优先级队列—堆

一、优先级队列 1、优先级队列概念 优先级队列&#xff0c;听名字我们就知道他是一种队列&#xff0c;队列在前面我们已经学习过了&#xff0c;它是一种先进先出的数据结构&#xff0c;但是在特殊的情况下&#xff0c;我们我们队列中元素是带有一定优先级的&#xff0c;它需要…

.Net Web API 访问权限限定

看到一个代码是这样的&#xff1a; c# webapi 上 [Route("api/admin/file-service"), AuthorizeAdmin] AuthorizeAdmin 的定义是这样的 public class AuthorizeAdminAttribute : AuthorizeAttribute {public AuthorizeAdminAttribute(){Roles "admin"…

什么情况下,C#需要手动进行资源分配和释放?什么又是非托管资源?

扩展&#xff1a;如何使用C#的using语句释放资源&#xff1f;什么是IDisposable接口&#xff1f;与垃圾回收有什么关系&#xff1f;-CSDN博客 托管资源的回收有GC自动触发&#xff0c;而非托管资源需要手动释放。 在 C# 中&#xff0c;非托管资源是指那些不由 CLR&#xff08;…

【人工智能】基于Python的机器翻译系统,从RNN到Transformer的演进与实现

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 机器翻译(Machine Translation, MT)作为自然语言处理领域的重要应用之一,近年来受到了广泛的关注。在本篇文章中,我们将详细探讨如何使…

2025年2月2日(网络编程 tcp)

tcp 循环服务 import socketdef main():# 创建 socket# 绑定tcp_server socket.socket(socket.AF_INET, socket.SOCK_STREAM)tcp_server.bind(("", 8080))# socket 转变为被动tcp_server.listen(128)while True:# 产生专门为链接进来的客户端服务的 socketprint(&qu…

像接口契约文档 这种工件,在需求 分析 设计 工作流里面 属于哪一个工作流

οゞ浪漫心情ゞο(20***328) 2016/2/18 10:26:47 请教一下&#xff0c;像接口契约文档 这种工件&#xff0c;在需求 分析 设计 工作流里面 属于哪一个工作流&#xff1f; 潘加宇(35***47) 17:17:28 你这相当于问用例图、序列图属于哪个工作流&#xff0c;看内容。 如果你的&quo…

Zabbix 推送告警 消息模板 美化(钉钉Webhook机器人、邮件)

目前网络上已经有很多关于Zabbix如何推送告警信息到钉钉机器人、到邮件等文章。 但是在搜索下来&#xff0c;发现缺少了对告警信息的美化的文章。 本文不赘述如何对Zabbix对接钉钉、对接邮件&#xff0c;仅介绍我采用的美化消息模板的内容。 活用AI工具可以减轻很多学习、脑力负…

Node.js 的底层原理

Node.js 的底层原理 1. 事件驱动和非阻塞 I/O Node.js 基于 Chrome V8 引擎&#xff0c;使用 JavaScript 作为开发语言。它采用事件驱动和非阻塞 I/O 模型&#xff0c;使其轻量且高效。通过 libuv 库实现跨平台的异步 I/O&#xff0c;包括文件操作、网络请求等。 2. 单线程事…

实现C语言的原子操作

什么是原子操作呢&#xff1f;即操作本身无法再被划分为更细的步骤。我们一般都是在多线程环境中&#xff0c;才会需要原子操作的支持。因为当多个线程中对共享资源进行原子操作时&#xff0c;编译器和 CPU 将能够保证这些操作的正确执行。原子操作就是说同一时刻只会有一个线程…

何谓共赢?

A和B是人或组织&#xff0c;他们怎样的合作才是共赢呢&#xff1f; 形态1:A提供自己的身份证等个人信息&#xff0c;B用来作贷款等一些事务&#xff0c;A每月得到一笔钱。 A的风险远大于收益&#xff0c;或者B从事的是非法行为&#xff1b; 形态2:A单方面提前终止了与B的合作…

物联网 STM32【源代码形式-使用以太网】连接OneNet IOT从云产品开发到底层MQTT实现,APP控制 【保姆级零基础搭建】

物联网&#xff08;IoT&#xff09;‌是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器等装置与技术&#xff0c;实时采集并连接任何需要监控、连接、互动的物体或过程&#xff0c;实现对物品和过程的智能化感知、识别和管理。物联网的核心功能包括数据采集与监…

Redis|前言

文章目录 什么是 Redis&#xff1f;Redis 主流功能与应用 什么是 Redis&#xff1f; Redis&#xff0c;Remote Dictionary Server&#xff08;远程字典服务器&#xff09;。Redis 是完全开源的&#xff0c;使用 ANSIC 语言编写&#xff0c;遵守 BSD 协议&#xff0c;是一个高性…

WebForms DataList 深入解析

WebForms DataList 深入解析 引言 在Web开发领域,控件是构建用户界面(UI)的核心组件。ASP.NET WebForms框架提供了丰富的控件,其中DataList控件是一个灵活且强大的数据绑定控件。本文将深入探讨WebForms DataList控件的功能、用法以及在实际开发中的应用。 DataList控件…

深入理解Java中的String

前言 在Java中&#xff0c;String类是一个非常重要的内置类&#xff0c;用于处理字符串数据。字符串是不可变的&#xff08;immutable&#xff09;&#xff0c;这意味着一旦创建&#xff0c;字符串的内容不能被修改。作为Java中最为基础和常用的类之一&#xff0c;String类在内…