算法 - 【二叉树中的第 K 大层和】

二叉树中的第 K 大层和

  • 题目
    • 示例1
    • 示例2
  • 分析
  • 代码

题目

给你一棵二叉树的根节点 root 和一个正整数 k 。树中的层和是指同一层上节点值的总和。返回树中第 k 大的层和(不一定不同)。如果树少于 k 层,则返回 -1 。注意,如果两个节点与根节点的距离相同,则认为它们在同一层。

示例1

二叉树中的第 K 大层和示例1

输入:root = [5,8,9,2,1,3,7,4,6], k = 2
输出:13
解释:树中每一层的层和分别是:
Level 1: 5
Level 2: 8 + 9 = 17
Level 3: 2 + 1 + 3 + 7 = 13
Level 4: 4 + 6 = 10
第 2 大的层和等于 13 。

示例2

二叉树中的第K大层和示例2

输入:root = [1,2,null,3], k = 1
输出:3
解释:最大的层和是 3 。

  • 树中的节点数为 n
  • 2 <= n <= 105
  • 1 <= Node.val <= 106
  • 1 <= k <= n

分析

返回的是第k大的层和,可以使用 BFS 计算每一层节点的和,然后对这些和从大到小排序,最后取出第k个值即可。
二叉树的 BFS 遍历需要使用一个队列来记录每层的节点,当遍历队列中节点的时候需要累加当前层的和,顺便把下一层的节点也添加到队列中。

代码

public long kthLargestLevelSum(TreeNode root, int k) {
    List<Long> mList = new ArrayList<>();
    Queue<TreeNode> q = new LinkedList<>();// 创建队列
    q.offer(root);// 根节点添加到队列中
    while (!q.isEmpty()) {
        int size = q.size();// 当前层的节点个数
        long sum = 0;// 当前层所有节点的和
        while (size-- > 0) {
            TreeNode cur = q.poll();// 出队
            sum += cur.val;// 累加当前层节点的值
            // 当前节点的左右子树如果不为空,也添加到队列中
            if (cur.left != null) q.offer(cur.left);
            if (cur.right != null) q.offer(cur.right);
        }
        mList.add(sum);// 当前层的和计算完之后添加到list中
    }
    if (mList.size() < k)// 如果少于k层,返回-1。
        return -1;
    // 从大到小排序,然后取出第k个元素
    Collections.sort(mList, (a, b) -> Long.compare(b, a));
    return mList.get(k - 1);
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端mock数据 —— 使用Apifox mock页面所需数据

前端mock数据 —— 使用Apifox 一、使用教程二、本地请求Apifox所mock的接口 一、使用教程 在首页进行新建项目&#xff1a; 新建项目名称&#xff1a; 新建接口&#xff1a; 创建json&#xff1a; 请求方法&#xff1a; GET。URL&#xff1a; api/basis。响应类型&#xff1…

Linux-nginx服务

一.Nginx概述 1.定义 一款高新能、轻量级Web服务软件 系统资源消耗低 对HTTP并发连接的处理能力高 单台物理服务器可支持30 000&#xff5e;50 000个并发请求。 2.Nginx模块作用 &#xff08;1&#xff09;main模块 全局配置模块&#xff0c;所有模块都要执行遵守&#xf…

如何使用Docker部署WBO容器并实现固定公网地址访问本地白板界面

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&…

【数学】【深度优先搜索】【图论】【欧拉环路】753. 破解保险箱

作者推荐 动态规划的时间复杂度优化 本文涉及知识点 数学 深度优先搜索 图论 欧拉环路 LeetCode753. 破解保险箱 有一个需要密码才能打开的保险箱。密码是 n 位数, 密码的每一位都是范围 [0, k - 1] 中的一个数字。 保险箱有一种特殊的密码校验方法&#xff0c;你可以随意…

阿里云服务器大降价20%,简单拥有五年三台2h4gECS,组建公网集群

要在阿里云ECS上组建集群&#xff0c;您可以按照以下步骤进行操作&#xff1a; 创建ECS实例&#xff1a;登录阿里云控制台&#xff0c;选择ECS实例&#xff0c;点击“创建实例”按钮。根据实际需求选择实例的配置参数&#xff0c;例如实例规格、操作系统、网络等。根据需要选择…

如何利用IP代理高效采集产品数据,打造爆品?

文章目录 一、什么是网络爬虫&#xff1f;二、普通人如何通过网络爬虫赚钱&#xff1f;2.1、心得分享2.2、工具自动化收集信息 三、 动态IP代理3.1、覆盖范围3.2、性价比3.3、教程中心F&Q使用教程 3.4、在网络数据采集中的重要性 四、实战应用案例一&#xff1a;ebay电商【…

Achronix以创新FPGA技术推动智能汽车与先进出行创新

全球领先的高性能现场可编程门阵列&#xff08;FPGA&#xff09;和嵌入式FPGA&#xff08;eFPGA&#xff09;半导体知识产权&#xff08;IP&#xff09;提供商Achronix Semiconductor公司宣布&#xff0c;该公司将参加由私募股权和风险投资公司Baird Capital举办的“Baird车技术…

汽车后视镜反射率检测仪厂家

随着汽车工业的快速发展&#xff0c;汽车后视镜作为驾驶员观察车辆周围环境的重要工具&#xff0c;其性能和质量对于交通安全至关重要。汽车后视镜的反射率检测仪是一种用于检测汽车后视镜反射性能的专业设备&#xff0c;其重要性不言而喻。本文将重点介绍汽车后视镜反射率检测…

Linux|centos7|yum和编译安装ImageMagick记录

一&#xff0c; yum安装imagemagick imagemagick这个软件是图像文件的处理神器&#xff0c;可以文字转图像以及图像的剪辑等等工作&#xff0c;也是配合人工智能工程的不可或缺的工具&#xff0c;具体的用处和特点就不在这里废话了&#xff0c;有兴趣的百度就行了 本次是在…

40、网络编程/TCP和UDP通信模型练习20240229

一、使用TCP模型创建服务器和客户端完成简单通信。 服务器代码&#xff1a; #include<myhead.h> #define SER_IP "192.168.32.130" #define SER_PORT 8888 int main(int argc, const char *argv[]) {//1.创建监听的套接字int sfd-1;sfdsocket(AF_INET,SOCK_S…

Ubuntu系统下DPDK环境搭建

目录 一.虚拟机配置1.添加一个网卡(桥接模式)2.修改网卡类型3.修改网卡名称4.重启虚拟机5.查看网卡信息6.dpdk配置内存巨型页 三 DPDK源代码下载和编译1.下载源代码2.解压源代码3.安装编译环境4.编译5.设置dpdk的环境变量6.禁止多队列网卡7.加载igb_uio模块8.网卡绑定9.验证测试…

手把手-服务器免密配置

文章目录 介绍一、测试机器是否免密1、在A机器上输入ssh admin192.168.2.101&#xff0c;回车确认&#xff0c;需要输入密码 二 、生成公钥和私钥1、在A机器上输入ssh-keygen -t ecdsa&#xff08;连续三次回车&#xff0c;即可在本地生成公钥和私钥&#xff0c;不设置密码&…

【AIGC大模型】InstantID 赏析

论文地址&#xff1a;https://arxiv.org/abs/2401.07519 InstantID 主页&#xff1a;https://instantid.github.io/ Demo &#xff1a;https://huggingface.co/spaces/InstantX/InstantID code&#xff1a; InstantID/InstantID: InstantID : Zero-shot Identity-Preserving…

idea创建一个简单的maven项目

个人学习笔记&#xff08;整理不易&#xff0c;有帮助点个赞&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 添加-DarchetypeCataloginternal 运行参数 (ps:不填的话&#xff0c;maven 骨架生成速度缓慢) 其实我没…

复制策略深入探讨

在之前的博客中&#xff0c;我们讨论了复制最佳实践和不同类型的复制&#xff0c;例如批量、站点和存储桶。但是&#xff0c;随着所有这些不同类型的复制类型的出现&#xff0c;人们不得不想知道在哪里使用哪种复制策略&#xff1f;从现有 S3 兼容数据存储迁移数据时&#xff0…

WebCPM:首个开源的交互式网页搜索中文问答模型

论文题目&#xff1a;WEBCPM: Interactive Web Search for Chinese Long-form Question Answering   论文日期&#xff1a;2023/05/23(ACL 2023)   论文地址&#xff1a;https://arxiv.org/abs/2305.06849   GitHub地址&#xff1a;https://arxiv.org/abs/2305.06849 文章…

基于transform的scale属性,动态缩放整个页面,实现数据可视化大屏自适应,保持比例不变形,满足不同分辨率的需求

文章目录 一、需求背景&#xff1a;二、需求分析&#xff1a;三、选择方案&#xff1a;四、实现代码&#xff1a;五、效果预览&#xff1a;六、封装组件&#xff1a; 一、需求背景&#xff1a; 数据可视化大屏是一种将数据、信息和可视化效果集中展示在一块或多块大屏幕上的技…

云尚办公-0.0.3

5. controller层 import pers.beiluo.yunshangoffice.model.system.SysRole; import pers.beiluo.yunshangoffice.service.SysRoleService;import java.util.List;//RestController&#xff1a;1.该类是控制器&#xff1b;2.方法返回值会被写进响应报文的报文体&#xff0c;而…

arr与arr的区别

一、定义区别 arr表示数组首元素地址 &arr表示整个数组&#xff0c;取出的是整个数组的地址&#xff08;也叫数组指针&#xff09; 二、二者偏移量不同 arr与&arr都指向数组的首地址 arr偏移量为一个int的大小 arr1&#xff1a;指向下一个元素的地址 &arr偏移…

小而巧的数字压缩算法:zigzag

阅读facebook开源的 RPC&#xff08;Remote Procedure Call&#xff09; 框架thrift源代码的时候&#xff0c;本来是在阅读框架&#xff0c;却不小心被 zigzag 这个钻石般闪耀的代码吸引。后来去百度搜索zigzag&#xff0c;却得到满屏图像相关的一个算法&#xff08;看来起名字…