LeetCode.2583. 二叉树中的第 K 大层和

news2024/10/7 2:31:36

题目

2583. 二叉树中的第 K 大层和

分析

这道题其实考察的是二叉树的层序遍历,下面我介绍一个二叉树的层序遍历模版:

    public List<List<Integer>> levelOrder(TreeNode root) {
    	// 记录最终的结果
        List<List<Integer>> res = new ArrayList<>();
        if(root == null) return res;
        // 借助队列
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while(!queue.isEmpty()) {
        	// 每一层元素的个数
            int size = queue.size();
            // 存放当前层的元素的集合
            List<Integer> list = new ArrayList<>();
            while(size != 0) {
                size--;
                // 从队列中取出节点
                TreeNode node = queue.poll();
                list.add(node.val);
                
                // 将当前节点的左右节点放入队列
                if(node.left != null) queue.add(node.left);
                if(node.right != null) queue.add(node.right);
            }
            res.add(list);
        }
        return res;
    }

这其实是LeetCode的题目:102. 二叉树的层序遍历,大家可以自己写一下。

回归本题:本题我们只需要知道记录每层的元素之和,放入一个集合list中,然后从小到大排列,然后直接取出来第【list.size() - k】 个元素即可。

代码

/**
 * 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 long kthLargestLevelSum(TreeNode root, int k) {
        Queue<TreeNode> queue = new LinkedList<>();
        if(root == null) return -1;
        List<Long> list = new ArrayList<>();
        queue.add(root);
        int level = 0;
        while(!queue.isEmpty()) {
            int size = queue.size();
            level++;
            long count = 0;
            while(size != 0) {
                size--;
                TreeNode node = queue.poll();
                count += node.val;
                if(node.left != null) queue.add(node.left);
                if(node.right != null) queue.add(node.right);
            }
            list.add(count);
        }
        Collections.sort(list);
        if(k <= list.size()) {
            return list.get(list.size() - k);
        }
        return -1;
    }
}

可以对照一下模版,可以发现几乎就是添加几句代码的事情,就可以解决了。
关于层序遍历其实就是套用模版。
在这里插入图片描述
推荐大家可以看一个视频:关于层序遍历的视频

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

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

相关文章

Python实战:xlsx文件的读写

Python实战&#xff1a;xlsx文件的读写 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望得到您的订阅和支持~ &#…

从微软、英伟达、亚马逊到“木头姐”,大佬瞄准AI新风口:类人机器人

新近消息显示&#xff0c;一家开发类人机器人的初创公司新近融资云集硅谷大厂和风投基金&#xff0c;显示类人机器人正在成为科技巨头押注人工智能&#xff08;AI&#xff09;应用的新风口。 上月末就有媒体提到&#xff0c;上述初创Figure AI Inc.在磋商&#xff0c;寻求在微…

影视后期:剪辑逻辑故事的层次(三幕式故事结构)

写在前面 学习影视后期整理相关笔记博文内容涉及&#xff1a;三幕式理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的风景已经和从前不一样了。——村上春树 流水账式短视频 流水账单线叙事要点&…

【JVM】MySQL驱动加载如何打破双亲委派机制

上文根据MySQL中Driver加载相关内容介绍了Java中SPI机制&#xff0c;本文详细介绍驱动的加载如何打破了双亲委派机制 Java双亲委派机制详细内容可以参考之前文章&#xff0c;在这里简单做个回顾 原理 首先我们要了解 Java 中的三层类加载器&#xff0c;分别为Bootstrap Class…

Java 学习和实践笔记(19):this的使用方法

this用来指向当前对象的地址。 this的用法&#xff1a; 1&#xff09;在普通方法中&#xff0c;this总是指向调用该方法的对象。在普通方法中&#xff0c;它是作为一种隐式参数一直就存在着&#xff08;这句话的意思&#xff0c;就是其实在普通方法中&#xff0c;编译器一直就…

林浩然与杨凌芸的Java泛型历险记:从类型安全到代码简洁,一场浪漫的编程革命

林浩然与杨凌芸的Java泛型历险记&#xff1a;从类型安全到代码简洁&#xff0c;一场浪漫的编程革命 Lin Haoran and Yang Lingyun’s Java Generics Adventure: A Romantic Programming Revolution from Type Safety to Code Simplicity 在那片充满逻辑与智慧的Java大陆上&…

家政小程序开发:帮助企业打造专属品牌,提升知名度

随着当下消费观念的升级&#xff0c;人口老龄化的严重&#xff0c;家政服务成为当下年轻人的必不可少的选择&#xff0c;我国家政服务市场的发展前景非常广阔。 如今&#xff0c;消费者对家政的需求日益多样化&#xff0c;家政市场数字化转型将成为一大发展趋势。在互联网等信…

开发分销商城小程序助力您的业务快速增长

一、什么是分销商城小程序&#xff1f; 分销商城小程序是一种基于微信平台开发的小程序&#xff0c;可以帮助商家快速建立自己的分销体系&#xff0c;实现商品的快速销售。 二、分销商城小程序的优势&#xff1a; 低成本&#xff1a;开发成本低&#xff0c;无需投入大量资金…

程序媛的mac修炼手册-- 小白入门Java篇

最近因为要用CiteSpace做文献综述&#xff0c;间接接触Java了。所以&#xff0c;继Python、C之后&#xff0c;又要涉猎Java了。刺激&#xff01;&#xff01; 由于CiteSpace与Java要求版本高度匹配&#xff0c;有个匹配详情明天为大家讲解。总之&#xff0c;我的Java之旅开始于…

“IT行业职业发展的黄金之路:哪些证书能为你增光添彩?“

文章目录 每日一句正能量前言1、浙大计算机程序设计能力考试证书&#xff08;PAT&#xff09;2、全国计算机等级考试证书(NCRE)3、计算机技术与软件专业资格考试证书&#xff08;软考&#xff09;4、通信专业技术人员职业水平证书5、全国计算机应用水平考试证书&#xff08;NIT…

记录 使用FFMPEG 笔记本摄像头推流

一、使用 FFMPEG 测试摄像头拉流显示 # 获取摄像头名称 ffmpeg -list_devices true -f dshow -i dummy# 我笔记本上的摄像头名称如下 device_pnp_\\?\usb#vid_0408&pid_1020&mi_00#6&199e90f7&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global# 使…

做抖音小店怎么选品?给新手商家的三条建议,能让你销量猛增999+

大家好&#xff0c;我是电商花花。 总是担心店铺不出单&#xff0c;没有销量&#xff0c;看着断断续续的收益&#xff0c;新手商家应该都是愁容满面吧。 今天花花从是3个维度上给新手商家一些建议&#xff0c;讲解一下如何高效选品&#xff0c;加你如何让你出单猛增999。 以前…

模型 KISS复盘法

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_总纲目录。重在提升认知。反思过去&#xff0c;不断进步。 1 KISS复盘法的应用 1.1 团队项目复盘 在一个团队项目结束后&#xff0c;团队成员可以使用KISS模型进行复盘&#xff0c;以总结经验教训并改进未来的工作…

个人博客系统测试

文章目录 一、项目介绍二、测试1. 功能测试2. 自动化测试&#xff08;1&#xff09;添加相关依赖&#xff08;2&#xff09;新建包并在报下创建测试类&#xff08;3&#xff09;亮点及难点 一、项目介绍 个人博客系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来…

【寸铁的刷题笔记】树、dfs、bfs、回溯、递归(二)

【寸铁的刷题笔记】树、dfs、bfs、回溯、递归(二) 大家好 我是寸铁&#x1f44a; 金三银四&#xff0c;树、dfs、bfs、回溯、递归是必考的知识点✨ 快跟着寸铁刷起来&#xff01;面试顺利上岸&#x1f44b; 喜欢的小伙伴可以点点关注 &#x1f49d; 上期回顾 感谢大家的支持&am…

【MySQL 探索之旅】初始MySQL数据库

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

【多线程】synchronized 关键字 - 监视器锁 monitor lock

synchronized 1 synchronized 的特性1) 互斥2) 可重入 2 synchronized 使用示例1) 修饰代码块: 明确指定锁哪个对象.2) 直接修饰普通方法: 锁的 SynchronizedDemo 对象3) 修饰静态方法: 锁的 SynchronizedDemo 类的对象 3 Java 标准库中的线程安全类 1 synchronized 的特性 1)…

代码随想录算法训练营第四十天|343. 整数拆分 96.不同的二叉搜索树

343. 整数拆分 链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路: 动态规划的题目虽然说是要先确定dp数组的含义&#xff0c;再确定递归公式&#xff0c;但是总感觉这两者是相辅相成的&#xff0c;是一起出来的&#xff0c;但是到此&#xff0c;dp数组…

第十二天-ppt的操作

目录 创建ppt文档 安装 使用 段落的使用 段落添加数据 段落中定义多个段落 自定义段落 ppt插入表表格 PPT插入图片 读取ppt 读取ppt整体对象 ​编辑 获取ppt文本 获取表格内容 创建ppt文档 安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python…

ARM处理器有哪些工作模式和寄存器?各寄存器作用是什么?ARM异常中断处理流程?

《嵌入式工程师自我修养/C语言》系列——ARM处理器有哪些工作模式和寄存器&#xff1f;各寄存器作用是什么&#xff1f; 一、ARM处理器的工作模式及寄存器1.1 ARM处理器的工作模式1.2 ARM处理器中的寄存器 二、ARM 异常中断处理2.1 什么是异常&#xff1f;异常向量表是什么&…