二叉树——429,515,116

ops/2025/2/6 12:52:22/

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

LeetCode429.N叉树的层序遍历

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

java">	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.在每个树行中找最大值

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

java">	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值。

java">	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.ppmy.cn/ops/156156.html

相关文章

北大AGI与具身智能评估新范式!Tong测试:基于动态具身物理和社会互动的评估标准

作者&#xff1a;Yujia Peng, Jiaheng Han, Zhenliang Zhang, Lifeng Fan, Tengyu Liu, Siyuan Qi, Xue Feng, Yuxi Ma, Yizhou Wang, Song-Chun Zhu 单位&#xff1a;北京通用人工智能研究院国家通用人工智能重点实验室&#xff0c;北京大学人工智能研究所&#xff0c;北京大…

大模型的底层逻辑及Transformer架构

一、大模型的底层逻辑 1.数据驱动 大模型依赖海量的数据进行训练&#xff0c;数据的质量和数量直接影响模型的性能。通过大量的数据&#xff0c;模型能够学习到丰富的模式和规律&#xff0c;从而更好地处理各种任务。 2.深度学习架构 大模型基于深度学习技术&#xff0c;通常…

C++哈希(链地址法)(二)详解

文章目录 1.开放地址法1.1key不能取模的问题1.1.1将字符串转为整型1.1.2将日期类转为整型 2.哈希函数2.1乘法散列法&#xff08;了解&#xff09;2.2全域散列法&#xff08;了解&#xff09; 3.处理哈希冲突3.1线性探测&#xff08;挨着找&#xff09;3.2二次探测&#xff08;跳…

【怎么用系列】短视频戒除-2-(移动端)定时关闭抖音等短视频

视频会影响人的潜意识。某种情况下&#xff0c;短视频已经成为了一种毒药&#xff0c;会让人上瘾的毒药。 短视频会让人上瘾&#xff0c;但是音频就太容易引起上瘾。因为没有图像传入到大脑当中&#xff0c;也就不会分泌更多的“多巴胺”&#xff0c;就不会影响到大脑。 如果抖…

ONE NET MQTT+HTTP多端控制

使用移动的ONENET实现数据上传与远程控制&#xff0c;数据上传使用MQTT协议&#xff08;ESP8266&#xff09;&#xff0c;而数据查看和远程控制使用的HTTP&#xff08;安卓端/QT&#xff09;&#xff0c;效果&#xff1a; ONENET简单MQTT和HTTP使用 ESP8266通过MQTT上传和订阅数…

DeepSeek-R1:开源机器人智能控制系统的革命性突破

目录 引言 一、DeepSeek-R1 的概述 1.1 什么是 DeepSeek-R1&#xff1f; 1.2 DeepSeek-R1 的定位 二、DeepSeek-R1 的核心特性 2.1 实时控制能力 2.2 多传感器融合 2.3 路径规划与导航 2.4 人工智能集成 2.5 开源与模块化设计 2.6 跨平台支持 三、DeepSeek-R1 的技术…

PPT演示设置:插入音频同步切换播放时长计算

PPT中插入音频&同步切换&放时长计算 一、 插入音频及音频设置二、设置页面切换和音频同步三、播放时长计算四、使用宏设置设置页面切换和音频同步 一、 插入音频及音频设置 1.插入音频&#xff1a;点击菜单栏插入-音频-选择PC上的音频&#xff08;已存在的音频&#x…

用Deepseek做EXCLE文件对比

背景是我想对比两个PO系统里的一个消息映射&#xff0c;EDI接口的mapping有多复杂懂的都懂&#xff0c;它还不支持跨系统版本对比&#xff0c;所以我费半天劲装NWDS&#xff0c;导出MM到excle&#xff0c;然后问题来了&#xff0c;我需要对比两个excel文件里的内容&#xff0c;…