[leetcode hot 150]第二百三十题,二叉搜索树中第k小的元素

news2025/1/9 15:25:52

题目:

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。

 

 二叉搜索树(BST)有一个特性:对于树中的任何节点,其左子树上的所有节点的值都小于该节点的值,而其右子树上的所有节点的值都大于或等于该节点的值。

要找到二叉搜索树中的第 k 小的元素,可以使用中序遍历(即先访问左子树,然后是根节点,最后是右子树)。在中序遍历过程中,会按照从小到大的顺序访问所有节点。

利用这个特性,我们就能轻松找到第k个最小元素

 

public class no_230 {
    public static void main(String[] args) {
        TreeNode root = new TreeNode(3);
        root.left = new TreeNode(1);
        root.right = new TreeNode(4);
        root.right.left = new TreeNode(2);

        // 查找第 2 小的元素
        int k = 2;
        int result = kthSmallest(root, k);
        System.out.println("第 " + k + " 小的元素是: " + result);
    }

    public static int kthSmallest(TreeNode root, int k) {
        return findKthSmallest(root, k, new int[k]);
    }

    private static int findKthSmallest(TreeNode node, int k, int[] counter) {
        if (node == null || counter[0] >= k) {
            return -1;
        }

        int left = findKthSmallest(node.left, k, counter);
        if (left != -1) {
            return left;
        }

        counter[0]++;
        if (counter[0] == k) {
            return node.val;
        }

        return findKthSmallest(node.right, k, counter);

    }

}

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

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

相关文章

lora网关到底能带多少设备,lora网关容量是多少?

引言:在推广LoRa模块的过程中,我频繁地遇到关于LoRa网关设备承载能力与容量的询问。为了更清晰地解答这些疑问,本文将深入探讨一个LoRa网关能支持的设备数量,以及这些数量如何受不同参数影响。 那么今天我们就详细的看下一个网关能…

如何使用Apache Web服务器提供自定义错误页面?

当您管理网站时,会花费大量时间来定制软件、运行软件以及调整布局和设计以符合您对网站外观的想法。通常我们只考虑网站中我们期望访问者看到的部分。不幸的是,有些常见页面可能会被忽略:错误页面。 错误页面 虽然理想情况下任何人都不应该在…

Codigger 之软件项目体检:提升企业软件交付质量的秘密武器

在当今竞争激烈的商业环境中,企业软件交付的质量直接关系到企业的市场竞争力和客户满意度。高质量的软件不仅能够满足用户需求,还能降低长期的维护成本,提高企业的运营效率。因此,提升软件交付质量已成为企业关注的焦点。Codigger…

【限免】频控阵雷达:概念、原理与应用【附MATLAB代码】

​微信公众号:EW Frontier QQ交流群:949444104 主要内容 PDA、FDA MATLAB代码 %---------------------------------------- %功能:FDA和相控阵天线方向图 %版本:ver1.0 %时间:2017.11.1 %--------------------------------------- clear all; clc; disp…

一文速通GIT版本管理与分支控制

目录 1、了解Git功能 2、第一次使用Git(首次配置好,后续不用再操作) 打开git后端 设置用户签名 结果 3、初始项目架构 创建本地新仓库并初始化 文件添加到本地仓库 a.文件添加缓存区 b.缓存区内容提交到本地仓库 c.改写提交的注释 …

【产品分析】作业帮

​基本信息 作业帮是目前国内最大的 K12 在线教育类 APP,致力于为全国中小学生提供全学段的学习辅导服务,其课程覆盖小学,初中,高中所有学科,并支持在线答题解题、一对一辅导、作文搜索、直播课、题库练习等众多功能&…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第六十三章 输入子系统实验

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

Rpi Zero W做的老头乐声控灯

祭图__|\0>历经各种尝试,最后选了docker 里装个rhasspy,配上paho-mqtt搞出了这个奇葩夜灯。各种曲折就不说了,直接分享捷径思路。 这个绿板子是respeaker hat with 2 mic 用的是seeed-voicecard,跟着github编译,不…

SM2p256v1椭圆曲线点加点减倍点python实现代码

首先给出SM2p256v1椭圆曲线的建议参数如下: default_ecc_table {n: FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123,p: FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF,g: 32c4ae2c1f1981195f9904466a39c9948fe30bbff266…

基于零极点配置的PID控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 PID控制器的基本形式 4.2 零极点配置原理 5.完整工程文件 1.课题概述 基于零极点配置的PID控制系统simulink建模与仿真,设置不同个数的零极点,对比PID控制器的控制输出效果。…

方天云智慧平台系统 GetCompanyItem SQL注入漏洞复现

0x01 产品简介 方天云智慧平台系统,作为方天科技公司的重要产品,是一款面向企业全流程的业务管理功能平台,集成了ERP(企业资源规划)、MES(车间执行系统)、APS(先进规划与排程)、PLM(产品生命周期)、CRM(客户关系管理)等多种功能模块,旨在通过云端服务为企业提供…

算法板子:模拟哈希表——哈希映射、哈希表中插入新值、拉链法处理冲突、查找一个数是否在哈希表中

由题意到x是[-1e9,1e9],我们要将x映射到[0,1e5)这种映射过程可以使用哈希函数hash(x)将x映射到对应的坑位,并使用哈希表存储映射后的x,这里的存储我们选用拉链法将映射到同一个坑位的数串起来; 哈希表又称为散列表比如: hash(4)4%31&#xff…

全国产业园排名新看点:国际数字影像产业园再创新高

随着中国数字经济的快速发展,产业园区作为技术创新和产业聚集的核心区域,正不断涌现出新的活力和突破。树莓集团旗下所运营的国际数字影像产业园,以其卓越的运营模式和创新能力,成功跻身全国产业园区的前列,成为行业的…

Godot学习笔记7——Input单例与自定义单例

一、单例 单例是一个可以在任何脚本直接访问的对象,分为内置单例与自定义单例。内置单例不是节点,主要成员是各类Server,开发者可以使用它们直接控制游戏程序的图形与音效等内容。 我们可以在文档中查找“GlobalScope”获取相关内容&#x…

【Python学习手册(第四版)】学习笔记07-Python对象类型-字符串详解

个人总结难免疏漏,请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 这篇文章是对Python对象类型-字符串的详解。内容较多需花1-2h阅读。如果你是0基础的初学者建议看这篇文章,对比其他教程会更加容易上手。 对字符串做了…

Java语言程序设计——篇十(1)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 接口介绍 接口概述接口定义接口的实现实战演练 👅接口的继承实战演练实战演练 接口的类型常量实战演练 静态方法默认方法解决默认方…

一投就中不是梦,录取率>80%,最快1个月就见刊,计算机沾边就收,认可度还不低

本次模术狮精心整理5本期刊,最快1个月就见刊,计算机沾边就收,认可度还不低! 1 Knowledge-Based Systems ▲ 图片来源:Knowledge-Based Systems官网 期刊简介:《Knowledge-Based Systems》是人工智能领域的…

(2024,缩放定律,信息论,模型大小与数据的线性关系)神经缩放定律的信息论基础

Information-Theoretic Foundations for Neural Scaling Laws 公和众与号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 1. 简介 3. 缩放定律 4. 一个例子 5. 结论 0. 摘要 神经网络…

EasyExcel - table写入复杂表头及内容

需求:在一个工作簿中,需要填充固定字段信息,并写入多个不同的标题列的表格及内容。 常规Excel写入一般是一个工作簿一个表头。 目录 一、复杂表单分析1.表单示例2.复杂表单拆解3.准备模板 二、EasyExcel文档1.最简单的填充Excel2.使用table去…

[Linux安全运维] Nginx安装部署以及LNMP框架搭建保姆级教程

前言 LNMP:Linux 系统下 NginxMySQLPHP 网站服务器架构。因为四种软件均是免费开源网站,所有这是一个免费、高效的网站服务系统。 本章主要介绍的是Nginx相关的环境部署,以及LNMP框架的搭建,Nginx知识点介绍在文章:[…