【算法刷题 | 二叉树 03】3.22 二叉树的层序遍历02(5题:在每个树行中找最大值,填充每个节点的下一个右侧节点指针,二叉树的最大深度,最小深度)

文章目录

    • 5.6 515_在每个树行中找最大值
      • 5.6.1问题
      • 5.6.2解法:层序遍历
    • 5.7 116_填充每个节点的下一个右侧节点指针
      • 5.7.1问题
      • 5.7.2解法:层序遍历
    • 5.8 116_填充每个节点的下一个右侧节点指针||
      • 5.8.1问题
      • 5.8.2解法:层序遍历
    • 5.9 104_二叉树的最大深度
      • 5.9.1问题
      • 5.9.2解法:层序遍历
    • 5.10 111_二叉树的最小深度
      • 5.10.1问题
      • 5.10.2解决

5.6 515_在每个树行中找最大值

5.6.1问题

给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。

  • 示例一:

在这里插入图片描述

输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]

5.6.2解法:层序遍历

class Solution {public List<Integer> largestValues(TreeNode root) {Queue<TreeNode> queue=new LinkedList<>();List<Integer> list=new ArrayList<>();if(root==null){return list;}queue.offer(root);while(!queue.isEmpty()){int len=queue.size();int max=Integer.MIN_VALUE;while(len>0){TreeNode node=queue.poll();max=max>node.val?max:node.val;if(node.left!=null){queue.offer(node.left);}if(node.right!=null){queue.offer(node.right);}len--;}list.add(max);}return list;}
}

5.7 116_填充每个节点的下一个右侧节点指针

5.7.1问题

给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:

struct Node {int val;Node *left;Node *right;Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL

初始状态下,所有 next 指针都被设置为 NULL

  • 示例一:

img

输入:root = [1,2,3,4,5,6,7]
输出:[1,#,2,3,#,4,5,6,7,#]
解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化的输出按层序遍历排列,同一层节点由 next 指针连接,'#' 标志着每一层的结束。

5.7.2解法:层序遍历

class Solution {public Node connect(Node root) {Queue<Node> queue=new LinkedList<>();if(root==null){return root;} queue.offer(root);while(!queue.isEmpty()){int len=queue.size();for(int i=0;i<len;i++){Node node=queue.poll();if(i==len-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;}
}

5.8 116_填充每个节点的下一个右侧节点指针||

5.8.1问题

给定一个二叉树:

struct Node {int val;Node *left;Node *right;Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL

初始状态下,所有 next 指针都被设置为 NULL

  • 示例一:

img

输入:root = [1,2,3,4,5,null,7]
输出:[1,#,2,3,#,4,5,7,#]
解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),'#' 表示每层的末尾。

5.8.2解法:层序遍历

这道题目说是二叉树,但116题目说是完整二叉树,其实没有任何差别,一样的代码一样的逻辑

5.9 104_二叉树的最大深度

5.9.1问题

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

  • 示例一:

img

输入:root = [3,9,20,null,null,15,7]
输出:3

5.9.2解法:层序遍历

class Solution {public int maxDepth(TreeNode root) {Queue<TreeNode> queue=new LinkedList<>();int max=0;if(root==null){return max;}queue.offer(root);while(!queue.isEmpty()){int len=queue.size();while(len>0){TreeNode node=queue.poll();if(node.left!=null){queue.offer(node.left);}if(node.right!=null){queue.offer(node.right);}len--;}max++;}return max;}
}

5.10 111_二叉树的最小深度

5.10.1问题

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

**说明:**叶子节点是指没有子节点的节点。

  • 示例一:

img

输入:root = [3,9,20,null,null,15,7]
输出:2

5.10.2解决

class Solution {public int minDepth(TreeNode root) {Queue<TreeNode> queue=new LinkedList<>();int max=0;if(root==null){return max;}queue.offer(root);while(!queue.isEmpty()){int len=queue.size();while(len>0){TreeNode node=queue.poll();if(node.left!=null){queue.offer(node.left);}if(node.right!=null){queue.offer(node.right);}//注意:若该节点的左右孩子均为空,则到达最低点if(node.left==null && node.right==null){max++;  //算上该层return max;}len--;}max++;}return max;}
}

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

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

相关文章

Transformer的前世今生 day02(神经网络语言模型、词向量)

神经网络语言模型 使用神经网络的方法&#xff0c;去完成语言模型的两个问题&#xff0c;下图为两层感知机的神经网络语言模型&#xff1a; 假设词典V内有五个词&#xff1a;“判断”、“这个”、“词”、“的”、“词性”&#xff0c;且要输出P(w_next | “判断”、“这个”、…

揭秘最热门AI写作软件,看看有哪些值得推荐的AI写作神器

在快节奏的现代生活中&#xff0c;我们常常面临各种压力&#xff0c;例如工作、学习等。因此&#xff0c;一款能够提高写作效率的工具变得尤为重要。那么&#xff0c;有没有什么AI写作软件是比较好用的呢&#xff1f;下面小编给大家推荐几款热门的写作软件。 一.爱制作AI写作 …

什么是分布式

一个系统 各组件分别部署在不同服务器。彼此通过网络通信和协调的系统。 可以指多个不同组件分布在网络上互相协作&#xff0c;比如说电商网站也可以一个组件的多个副本组成集群&#xff0c;互相协作如同一个组件&#xff0c;比如数据存储服务中为了数据不丢失而采取的多个服务…

AI时代,Matter如何融入与服务中国智能家居市场,助力中国企业出海?

随着智能家居产业的飞速发展&#xff0c;丰富多样的智能家居产品为消费者带来了便利的同时&#xff0c;因为不同品牌、不同产品之间的协议与标准不统一&#xff0c;导致消费者体验产生割裂&#xff0c;本来想买个“智能”家居&#xff0c;结果买了个“智障”家居&#xff0c;这…

SQL日期函数

文章目录 1.获取日期时间函数1.1 获取当前日期时间1.2 获取当前日期1.3 获取当前时间 2.日期格式化★★★2.1 日期转指定格式字符串2.2 字符串转日期 3.日期间隔3.1 增加日期间隔 ★★★3.2 减去一个时间间隔★★★3.3 日期相差天数&#xff08;天&#xff09;3.4 相差时间&…

腾讯二面:如何保证接口幂等性?高并发下的接口幂等性如何实现?

什么是接口幂等性 接口幂等性这一概念源于数学&#xff0c;原意是指一个操作如果连续执行多次所产生的结果与仅执行一次的效果相同&#xff0c;那么我们就称这个操作是幂等的。在互联网领域&#xff0c;特别是在Web服务、API设计和分布式系统中&#xff0c;接口幂等性具有非常…

嵌入式软件面试-linux-中高级问题

Linux系统启动过程&#xff1a; BIOS自检并加载引导程序。引导程序&#xff08;如GRUB&#xff09;加载Linux内核到内存。内核初始化硬件&#xff0c;加载驱动&#xff0c;建立内存管理。加载init进程&#xff08;PID为1&#xff09;&#xff0c;通常是systemd或SysVinit。init…

安卓使用MQTT实现阿里云物联网云台订阅和发布主题(3)

一、订阅主题代码讲解 private final String mqtt_sub_topic "/sys/k0wih08FdYq/LHAPP/thing/service/property/set";//订阅话题//mqtt客户端订阅主题//QoS0时&#xff0c;报文最多发送一次&#xff0c;有可能丢失//QoS1时&#xff0c;报文至少发送一次&#xff0c…

23 OpenCV 直方图比较

文章目录 直方图比较的目的相关性计算 (CV_COMP_CORREL)卡方计算 (CV_COMP_CHISQR)十字计算(CV_COMP_INTERSECT)巴氏距离计算 (CV_COMP_BHATTACHARYYA )compareHist 直方图比较算子示例 直方图比较的目的 直方图比较的目的是衡量两幅图像之间的相似度或差异度。通过计算图像的颜…

linux下用docker部署es和kibana(带ik分词器)(二)

在上一篇文章中讲到&#xff0c;我们利用docker安装了es和kibana&#xff0c;下面我们讲解一下在安装es时把ik分词器这个插件集成进去&#xff0c;首先我们编写一个dockerfile文件&#xff0c;自定义一个es镜像&#xff0c;当然这个镜像肯定集成了ik分词器&#xff0c;具体步骤…

【LVGL-开关部件】

LVGL-开关部件 ■ LVGL-开关部件■ 开关部件&#xff1a;指示器打开的颜色■ 开关部件&#xff1a;不可修改■ 开关部件&#xff1a;获取开关状态■ 开关部件&#xff1a;示例一&#xff1a;制冷,制暖,开关 ■ LVGL-开关部件 ■ 开关部件&#xff1a;指示器打开的颜色 ■ 开关部…

探讨Java代码混淆加固工具

摘要 本篇博客将介绍几种常用的Java代码混淆工具&#xff0c;如ProGuard、Allatori Java Obfuscator、VirboxProtector、ipaguard和DashO。我们将深入探讨它们的特点、功能以及在保护Java应用程序安全方面的作用。此外&#xff0c;还将强调在使用Java代码混淆工具时需要注意的…

RK3568笔记二十:PP-YOLOE部署测试

若该文为原创文章&#xff0c;转载请注明原文出处。 注&#xff1a;转换测试使用的是Autodl服务器&#xff0c;CUDA11.1版本&#xff0c;py3.8。 一、PP-YOLOE环境安装 创建环境 # 使用 conda 创建一个名为 PaddleYOLO 的环境&#xff0c;并指定 python 版本conda create -n…

(vue)新闻列表与图片对应显示,体现选中、移入状态

(vue)新闻列表与图片对应显示&#xff0c;体现选中、移入状态 项目背景&#xff1a;郑州院XX项目首页-新闻展示模块&#xff0c;鼠标移入显示对应图片&#xff0c;且体现选中和移入状态 首次加载&#xff1a; 切换列表后&#xff1a; html: <el-row :gutter"20"…

阶乘求和(第十四届蓝桥杯JavaB组省赛真题)

/ 10^9考虑前九位&#xff0c;% 10^9保留后9位 解题思路: 求获取结果的后九位数字&#xff0c;需要对10^9取余&#xff0c;因为202320232023这个数字的阶乘太大&#xff0c;必须要减少计算量&#xff0c;因为当一个整数乘以10^9后对其取余&#xff0c;那么结果都为0。 所以我…

【毕设级项目】基于ESP8266的家庭灯光与火情智能监测系统——文末源码及PPT

目录 系统介绍 硬件配置 硬件连接图 系统分析与总体设计 系统硬件设计 ESP8266 WIFI开发板 人体红外传感器模块 光敏电阻传感器模块 火焰传感器模块 可燃气体传感器模块 温湿度传感器模块 OLED显示屏模块 系统软件设计 温湿度检测模块 报警模块 OLED显示模块 …

FebHost:注册了新加坡.SG域名,还需要申请SSL证书吗?

在互联网飞速发展的今天&#xff0c;网站安全性已经成为评价一个网站是否专业、可靠的重要标准。对于注册了新加坡.SG域名的企业或个人而言&#xff0c;申请SSL证书不仅是保障网站数据安全的关键&#xff0c;更是提升网站在搜索引擎中排名的有效手段。 首先&#xff0c;SSL证书…

osgEarth学习笔记2-第一个Osg QT程序

原文链接 上个帖子介绍了osgEarth开发环境的安装。本帖介绍我的第一个Osg QT程序。 下载 https://github.com/openscenegraph/osgQt 解压&#xff0c;建立build目录。 使用Cmake-GUI Configure 根据需要选择win32或者x64&#xff0c;这里我使用win32. 可以看到include和lib路…

RK3568驱动指南|第二篇 字符设备基础-第13章 杂项设备驱动实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

【go从入门到精通】select条件控制

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…