【算法分析与设计】最大层内元素和

       📝个人主页:五敷有你      

 🔥系列专栏:算法分析与设计

⛺️稳中求进,晒太阳

题目

给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层,而根节点的子节点位于第 2 层,依此类推。

请返回层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。

示例

示例 1:

输入:root = [1,7,0,7,-8,null,null]
输出:2
解释:
第 1 层各元素之和为 1,
第 2 层各元素之和为 7 + 0 = 7,
第 3 层各元素之和为 7 + -8 = -1,
所以我们返回第 2 层的层号,它的层内元素之和最大。

示例 2:

输入:root = [989,null,10250,98693,-89388,null,null,null,-32127]
输出:2

思路(树的层次遍历的简单变形)

树的层次遍历是一种按照树的层级顺序逐层遍历节点的方法。在层次遍历中,首先访问树的根节点,然后依次访问每一层的节点,从上到下、从左到右地顺序访问。这种遍历方式通常使用广度优先搜索(BFS)算法实现。

具体步骤如下:

  1. 从树的根节点开始,将根节点放入队列中。
  2. 从队列中取出一个节点,访问该节点。
  3. 将该节点的所有子节点(如果有)依次放入队列中。
  4. 重复步骤 2 和步骤 3,直到队列为空。

层次遍历的特点是,它保证了在遍历过程中,同一层的节点会先于下一层的节点被访问。这种遍历方式对于需要按层级处理树节点的情况非常有用,例如在解决本问题中,需要计算每一层节点的元素之和,因此使用层次遍历能够很方便地实现这个目标。

代码实现

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public int maxLevelSum(TreeNode root) {Queue<TreeNode> queue=new LinkedList();queue.offer(root);int maxValue=Integer.MIN_VALUE;int minEle=Integer.MAX_VALUE;int minFloor=0;int floor=0;while (!queue.isEmpty()){int size=queue.size();int sum=0;floor++;for(int i=0;i<size;i++){TreeNode node=queue.poll();if(node.left!=null) queue.offer(node.left);if (node.right!=null) queue.offer(node.right);sum+=node.val;}if(sum>maxValue){maxValue=sum;minFloor=floor;}}return minFloor;}
}

运行结果 

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

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

相关文章

Qt的安装

下载安装包 我们选择Open Source的版本。 可以从https://www.qt.io/download-open-source直接下载最新版本&#xff0c;对于想要选择特定版本&#xff0c;或者尝试beta版功能的用户&#xff0c;也可以从https://download.qt.io选择自己需要的版本。 如果你的网速可以的话&am…

PCL库学习及ROS使用

PCL库学习 c_cpp_properties.json {"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/usr/include","/usr/local/include"],"defines": [],"compiler…

2.14日学习打卡----初学Zookeeper(一)

2.14日学习打卡 目录: 2.14日学习打卡Zookeeper概念一. 集中式到分布式单机架构集群架构什么是分布式三者区别 二. CAP定理分区容错性一致性可用性一致性和可用性的矛盾一致性和可用性如何选择 三. 什么是Zookeeper分布式架构Zookeeper从何而来Zookeeper介绍 四. 应用场景数据发…

第六节笔记:OpenCompass 大模型评测

视频链接&#xff1a;https://www.bilibili.com/video/BV1Gg4y1U7uc/?spm_id_from333.788&vd_source3bbd0d74033e31cbca9ee35e111ed3d1

上位机图像处理和嵌入式模块部署(Halcon借鉴与客户学习)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于很多学院派的同学来说&#xff0c;他们对市场的感觉一般是比较弱的。如果写一个软件的话&#xff0c;或者说开发一个项目的话&#xff0c;他们…

2024 CKS 题库 | 9、网络策略 NetworkPolicy

不等更新题库 CKS 题库 9、网络策略 NetworkPolicy Task 创建一个名为 pod-restriction 的 NetworkPolicy 来限制对在 namespace dev-team 中运行的 Pod products-service 的访问。 只允许以下 Pod 连接到 Pod products-service namespace qaqa 中的 Pod位于任何 namespace&…

vue-自定义创建项目(六)

为什么要自定义创建项目&#xff1f; 因为VueCli默认创建的项目不能够满足我们的要求&#xff0c;比如默认的项目中没有帮我们集成路由&#xff0c;vuex&#xff0c;eslink等功能。 默认项目 自定义创建项目 流程&#xff1a; 创建项目命令&#xff1a;vue create custom_dem…

亚马逊测评:揭秘做号的“花招”与“猫腻”,如何避免被割韭菜?

亚马逊测评行业如今如火如荼&#xff0c;吸引了众多朋友投身其中。然而&#xff0c;这个行业也是五花八门&#xff0c;什么样的人和公司都有&#xff0c;让人眼花缭乱。作为卖家&#xff0c;如何选择靠谱的测评服务商是一门必修课&#xff1b;而对于初学者&#xff0c;如何入门…

SHERlocked93 的 2021 年终总结

我还是和往年一样&#xff0c;总结发的又晚了一点&#xff0c;为什么又发这么晚呢&#xff0c;因为懒 年终总结 疫情之后时间时间过的太快了&#xff0c;不知道是不是只有我这样感觉。 四五月份去兰州玩了下&#xff08;其实是出差&#xff09;&#xff0c;终于看到了黄土高原&…

2024年蓝牙耳机推荐,值得入手的蓝牙耳机排行榜

​随着生活水平的提高&#xff0c;蓝牙耳机已经成为了许多人日常生活中不可或缺的数码产品。无论是听音乐、看视频还是打电话&#xff0c;蓝牙耳机都为我们提供了极大的便利。然而&#xff0c;面对市场上众多的蓝牙耳机品牌和型号&#xff0c;许多人感到无所适从。所以&#xf…

Linux第58步_备份busybox生成rootfs根文件系统

备份busybox生成rootfs根文件系统 打开终端 输入“ls回车” 输入“cd linux/回车” 输入“ls回车”&#xff0c;产看“linux”目录下的文件和文件夹 输入“cd nfs/回车”&#xff0c;切换到“nfs”目录 输入“ls回车”&#xff0c;产看“nfs”目录下的文件和文件夹 输入…

力扣OJ题——旋转数组

题目&#xff1a;189.旋转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数 思路一&#xff1a; 1.每次挪动旋转1位&#xff08;用tmp将最后一位存起来&#xff0c;其余所有数据向后移&#xff0c;然后将tmp放在第一个位…

RabbitMQ配置消息转换器

1. 默认转换器 Test public void testSendMap() throws InterruptedException {// 准备消息Map<String, Object> msg new HashMap<>();msg.put("name", "harry");msg.put("age", 21);// 发送消息rabbitTemplate.convertAndSend(&q…

无电池设备物联网的未来

在物联网(IoT)世界中&#xff0c;一种改变游戏规则的趋势正在出现&#xff0c;它就是无电池物联网。想象一下不需要普通电池的智能设备。这些被称为环境物联网(A-IoT)的独特小工具正在改变游戏规则。它们不再使用老式电池&#xff0c;而是通过无线电信号、光、振动和热量获取能…

Python一级考试笔记

Python一级考试笔记【源源老师】 前置知识&#xff1a;&#xff08;了解即可&#xff09; Python常见的几种编程环境&#xff1a;IDLE&#xff08;自带&#xff09;、Visual Studio Code、Jupyter、pyCharm&#xff1b; python版本&#xff1a;python3 和 python2&#xff08;…

STM32学习笔记(七) —— DMA传输(MTM)

DMA&#xff0c;全称是Direct Memory Access&#xff08;直接内存访问&#xff09;。可以在存储器和存储器之间或者外设和存储器之间传输数据&#xff0c;而不需要CPU的干预&#xff0c;这样可以节省CPU的资源&#xff0c;提高工作效率。 1.功能框图 STM32F103RCT6有两个DMA控…

东方博宜 1057. 能被5整除且至少有一位数字是5的所有整数的个数

东方博宜 1057. 能被5整除且至少有一位数字是5的所有整数的个数。 思路&#xff1a; 1 首先输入n 2 用for循环遍历1-n中间的数 3 每一个数进行对5取余的运算&#xff0c;看是否能被5整除 4 在整除的基础上&#xff0c;看这个数的各个数位上是否有5&#xff0c;这一步将数对10取…

OpenGL学习——15.投光物_聚光

前情提要&#xff1a;本文代码源自Github上的学习文档“LearnOpenGL”&#xff0c;我仅在源码的基础上加上中文注释。本文章不以该学习文档做任何商业盈利活动&#xff0c;一切著作权归原作者所有&#xff0c;本文仅供学习交流&#xff0c;如有侵权&#xff0c;请联系我删除。L…

简单工厂模式-Simple Factory Pattern

原文地址:https://jaune162.blog/design-pattern/simple-factory-pattern/ 简介 简单工厂模式是一种非常常用的设计模式,但是并不属于GoF中的23种设计模式。简单设计模式有很多种实现方式。 本文我们就来讨论简单工厂模式的实现方式,以及如何借助Spring实现一个扩展性很好…

数字孪生与智慧城市:共筑未来城市的科技基石

一、引言 随着科技的飞速发展&#xff0c;数字孪生与智慧城市已成为未来城市建设的两大关键技术。数字孪生为城市提供了一个虚拟的数字镜像&#xff0c;使我们能全面、深入地了解城市的运行状态。而智慧城市则借助先进的信息通信技术&#xff0c;提升城市的智能化水平&#xf…