剑指 Offer 54. ! 二叉搜索树的第k大节点 (考察二叉树的中序遍历)

news2024/11/18 21:36:42

剑指 Offer 54. 二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第 k 大的节点的值。

在这里插入图片描述
我的思路是:用一个全局arrayList不断收集“逆向”中序遍历该搜索二叉树所需要的答案

class Solution {
    int res, k;
    public int kthLargest(TreeNode root, int k) {
        this.k = k; // !! 注意这里this的使用
        dfs(root);
        return res;
    }
    void dfs(TreeNode root) {
        if(root == null) return;
        dfs(root.right);
        if(k == 0) return;
        if(--k == 0) res = root.val;
        dfs(root.left);
    }
}

作者:jyd
链接:https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/solution/mian-shi-ti-54-er-cha-sou-suo-shu-de-di-k-da-jie-d/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    ArrayList<Integer> list = new ArrayList<>();
    public int kthLargest(TreeNode root, int k) {
        preOrder(root);
        return list.get(k-1);
    }
    public void preOrder(TreeNode root){
        if(root!=null){
            preOrder(root.right);           
            list.add(root.val);
             preOrder(root.left);
        }
    }
}

下面是大佬K神的思路:
使用全局变量,一遍遍历一遍数,数到第k个最大的数时就返回。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    int res=0,kk=0;
    public int kthLargest(TreeNode root, int k) {
        kk=k;
        inverseInOrder(root);
        return res;
    }
    public void inverseInOrder(TreeNode root){
        if(root!=null){
            inverseInOrder(root.right);
            if(kk==0) return;
            if(kk-1==0) res=root.val;
            kk--;
            inverseInOrder(root.left);
        }

    }
}

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

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

相关文章

太牛了,h2oGPT直接操作本地PDF、Excel、Word、图像、等文件

h2o项目简介 查询和总结您的文档&#xff0c;或者只是使用 h2oGPT&#xff08;一个 Apache V2 开源项目&#xff09;与本地私有 GPT LLM 聊天。项目地址https://github.com/h2oai/h2ogpt测试体验地址https://gpt.h2o.ai/主要功能 任何文档的私人离线数据库&#xff08;PDF、Ex…

Linux安装显卡驱动、annaconda和CUDA(超详细)

Windows版本的annaconda安装请见&#xff1a;Windows版本的annaconda安装 Windows版本的CUDA安装请见&#xff1a;Windows版本的CUDA安装 目录 一、安装显卡驱动 1.查询系统中是否安装了显卡驱动 2.查询显卡型号并选择安装的驱动版本 3.安装驱动 二、安装annaconda 三、…

如何为公司选择合适的工时管理系统?

近年来&#xff0c;越来越多的企业将工作外包、提供灵活的工作时间和聘用远程员工&#xff0c;因此对时间跟踪软件的需求也在不断增长。企业需要了解员工如何度过工作时间&#xff0c;否则可能会让企业蒙受损失。 为确保物有所值&#xff0c;在选择工时管理系统时可参考以下步…

EXCEL, 用if({1,0,0} ...) 实现把给定的区域,输出为任意你想要的矩阵,数组区域!

目录 1 原材料&#xff1a;这样的一个区域 工具 if({1,0,0}) 数组公式 1.1 原始数据 1.2 原理 if(0/1,t-value,f-value)---变形--->if({},range1,range2) 1.2.1 if(0/1,t-value,f-value)---变形--->if({},range1,range2) 1.2.2 原理1&#xff1a; if 数组原理&#…

探寻AI大模型平台之巅——文心千帆

目录 前言1. 何为文心千帆2. 核心亮点2.1 第三方大模型2.2 Prompt模板2.3 插件编排2.4 安全可靠 3. 一站式服务3.1 数据管理3.2 数据标注3.3 数据处理3.4 数据训练3.5 模型纳管3.5.1 模型评估3.5.2 模型压缩 3.6 服务发布 总结 前言 众多AI大模型不断涌现&#xff0c;一时不知…

小乌龟(TortoiseGit)连接GitLab

目录 &#x1f35f;写在前面 &#x1f35f;实验目标 &#x1f35f;安装gitlab &#x1f37f;1、安装依赖 &#x1f37f;2、下载清华gitlab包 &#x1f37f;3、安装gitlab &#x1f37f;4、修改配置文件 &#x1f37f;5、管理命令 &#x1f35f;访问gitlab &#x1f35f;界面设置…

rem适配方法

rem适配案例&#xff1a; 高度适配&#xff0c;现在是写死的 在不同的屏幕下进行适配 根据不同设备适配不同页面的实施方案有两种 如果是在320像素字体下&#xff0c;字体是多大 如果在750像素下屏幕是多大 比例就是2rem 先拿一个标准的稿件算rem 我们等比例缩放rem的值是怎…

【项目 进程 9】2.19 信号概述 2.20 kill、raise、abort函数

文章目录 2.19 信号概述信号的概念Linux信号一览表信号的5种默认处理动作corecore文件权限及位置设置 2.20 kill、raise、abort函数&#xff08;给进程发信号&#xff09; 2.19 信号概述 信号的概念 Linux信号一览表 共62种信号。 SIGKILL&#xff1a;所有进程不包括僵尸进程…

Flexbox

Flexbox 一、什么是 Flexbox ?二、Flexbox 知识点2.1、Flex Container&#xff08;容器&#xff09;2.1.1、轴2.1.2、添加flex支持2.1.3、flex-direction&#xff08;主轴向&#xff09;2.1.3.1、row 横向2.1.3.2、row-reverse 横向翻转2.1.3.3、column 纵向2.1.3.4、column-r…

关于LCD、LED、OLED、MLED(包含mimiLED和microLED)、柔性屏、超薄屏

关于LCD、LED、OLED、MLED、柔性屏、超薄屏 1、LCD&#xff1a;液晶显示屏&#xff0c;LED为其提供背景光源。 2、LED&#xff1a;发光二极管&#xff0c;是LCD的一部分。就是个灯泡。 3、OLED&#xff1a;相对于LCD来讲的&#xff0c;LCD要靠别人给他提供光、本身不能自发光…

JavaScript(四)DOM及CSS操作

1、DOM简介 DocumentType: Html的声明标签 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Docume…

基础实验篇 | PX4控制器的外部通信

PX4控制器的外部通信 01 实验名称及目的 PX4控制器的外部通信&#xff1a;在进行硬件在环仿真时&#xff0c;我们常常需要向设计的Simulink控制器中发送数据&#xff08;传感器数据、故障触发、控制指令、参数调整等&#xff09;&#xff0c;同时接收一些感兴趣的数据。RflySi…

隐藏程序文档窗口工具1.0下载

在录屏或直播时有些窗口&#xff0c;比如讲稿提词器等&#xff0c;不想录进视频里&#xff0c;或者不想被观众看到&#xff0c;您可以使用这个窗口隐藏工具。 这个隐藏并不是真的隐藏了&#xff0c;我们在电脑上依然可以看到&#xff0c;但是直播或录屏工具抓取不到了&#xf…

看pdf的软件有哪些?这几款了解一下

看pdf的软件有哪些&#xff1f;PDF格式的文件在现代社会中应用广泛&#xff0c;而PDF阅读器是很重要的一种工具。相比于其他文件格式&#xff0c;PDF文件的格式统一&#xff0c;便于分享和传输&#xff0c;并且不易被篡改。而PDF阅读器则是我们查看、编辑和管理PDF文件的必备工…

<C++>入门

在学习完C语言的基础上&#xff0c;继续开始C的学习。 C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式 等。熟悉C语言之后&#xff0c;对C学习有一定的帮助&#xff0c;本章节主要目标&#xff1a; 1. 补充…

11年编码经验程序员惨遭淘汰解雇,原因竟是不会使用AI工具

近日&#xff0c;Twitter 上一名技术人分享了一个事件&#xff0c;即拥有11年Java编码经验、会 100% 手写代码的程序员因拒绝使用辅助代码工具&#xff0c;只想写可控的代码&#xff0c;竟败给一位仅有4年经验、却善用编码工具的后辈&#xff0c;惨遭面试淘汰。 当「拒绝使用编…

ASIC芯片设计全流程项目实战课重磅上线 ,支持 65nm制程流片 !

全流程项目实战课学什么&#xff1f; 此次推出【 ASIC芯片设计全流程项目实战课】&#xff0c;基于IPA图像处理加速器&#xff0c;以企业级真实ASIC项目为案例&#xff0c;学员可参与全流程项目实践&#xff0c;以及65nm真实流片&#xff01; 众所周知&#xff0c;放眼整个IC硕…

Java泛型6——类型擦除

注&#xff1a;以下内容基于Java 8&#xff0c;所有代码都已在Java 8环境下测试通过 Java泛型1——概述Java泛型2——泛型类Java泛型3——泛型接口Java泛型4——泛型方法Java泛型5——泛型通配符Java泛型6——类型擦除 1. 什么是类型擦除 泛型是在Java 1.5被引进的&#xff0…

sqlserver 使用SQLOLEDB 远程数据库同步数据

exec sp_addlinkedserver remote_server, , SQLOLEDB, ip exec sp_addlinkedsrvlogin remote_server, false,null, 账号, 密码 --查询方式 select * from remote_server.数据库名.dbo.表名 --不再使用时删除链接服务器 exec sp_dropserver remote_server, droplogins…

时序数据库 TDengine 与 WhaleStudio 完成相互兼容性测试认证

近年来&#xff0c;开源及其价值获得社会各界的广泛认可&#xff0c;无论是国家政策导向还是企业数字化转型&#xff0c;都在加速拥抱开源。对于如操作系统、数据库等基础软件来说&#xff0c;开源更是成为驱动技术创新的有力途径。 在此背景下&#xff0c;近日&#xff0c;涛…