Java算法_ BST 中第 k 个最小元素 (LeetCode_Hot100)

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

获得更多?算法思路:代码文档,算法解析的私得。

运行效果
在这里插入图片描述

完整代码

/**
 * 2 * @Author: LJJ
 * 3 * @Date: 2023/8/21 13:31
 * 4
 */
public class KthSmallestElement {
    static class TreeNode{
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int val){
            this.val = val;
        }
    }

    private int count = 0; // 计数器,用于记录已经访问的节点个数
    private int result = 0; // 存储第 k 个最小元素的值

    public int kthSmallest(TreeNode root, int k){
        inorderTraversal(root,k); //开始中序遍历查找第k个最小元素
        return result;
    }

    private void inorderTraversal(TreeNode node, int k){
        if (node == null || count >= k){
            return; //诋毁终止条件,节点为空或计数器达到k
        }
        inorderTraversal(node.left, k); // 递归遍历左子树

        count++; //计数器加一
        if (count == k){
            result = node.val;      // 如果计数器等于 k,说明找到第 k 个最小元素
        }
        inorderTraversal(node.right, k); // 递归遍历右子树
    }

    public static void main(String[] args) {
        // 构建二叉搜索树
        TreeNode root = new TreeNode(5);
        root.left = new TreeNode(2);
        root.left.right = new TreeNode(4);
        root.right = new TreeNode(9);
        root.right.left = new TreeNode(6);
        root.right.right= new TreeNode(10);
        KthSmallestElement solution = new KthSmallestElement();
        int k = 3; // 要找第 k 个最小元素
        int result = solution.kthSmallest(root, k);
        System.out.println("第 " + k + " 个最小元素是: " + result); // 输出结果
    }
}

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

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

相关文章

Linux学习记录——이십오 多线程(2)

文章目录 1、理解原生线程库线程局部存储 2、互斥1、并发代码(抢票)2、锁3、互斥锁的实现原理 3、线程封装1、线程本体2、封装锁 4、线程安全5、死锁6、线程同步1、条件变量1、接口2、demo代码 1、理解原生线程库 线程库在物理内存中存在,也…

Redis 数据库 NoSQL

目录 一、NoSQL 二、为什么会出现NoSQL技术 三、NoSQL的类别 键值(Key-Value)存储数据库 列存储数据库 文档型数据库 图形(Graph)数据库 四、NoSQL适应场景 五、在分布式数据库中CAP原理 1、CAP 2、BASE 一、NoSQL NoS…

低代码开发平台能开发什么类型的系统和软件?

低代码开发平台能开发什么类型的系统和软件? 1、数据分析和报告系统: 使用低代码平台,企业可以创建数据看板,集成不同数据源,自动提取、分析和可视化数据。这种系统适用于监控业务指标、分析趋势,并为决策…

多个微信号怎么快速发圈、自动加好友、自动回复?

一键助你快速发圈、批量自动加好友、自动回复,好用哭了! 微信管理系统是一个聚合管理多个微信账号的利器,让你的微信管理变得简单高效。不管你是电商、微商,还是拥有多个微信号的用户,这一款微信管理软件都可以满足你的…

vue2+qrcodejs2+clipboard——实现二维码展示+下载+复制到剪切板——基础积累

最近在写后台管理系统时,遇到一个需求就是要实现二维码的展示下载复制到剪切板。 效果图如下: 1.二维码展示下载功能——qrcodejs20.0.2 我是安装的qrcodejs20.0.2,指定了具体的版本号,也可以安装默认的当前稳定版本&#xff0…

门店数字化店务经营系统怎么做?门店数字化系统推荐

为什么你的门店无人问津,有的门店却天天都有到店客户?为什么你的门店要花费两三天才能统计好经营情况,有的门店却能够做到“数据实时可查”?经营管理和营销获客是每个门店发展的重中之重,今天也为大家分享一套完善的门…

西门子SCALANCE W744-1PRO 客户端配置

. 安装西门子无线搜索软件PST。 无线SCALANCE W788-1PRO参数设置。 打开PST软件:选择Settings->Network Adapter->2本地连接 输入该无线设置的IP地址,进入网络访问界面。输入密码:admin,点击Log on进入。 填写本无线的SSI…

kaggle推荐系统比赛top方案汇总【附baseline代码】

推荐系统可以很好地解决信息过载以及信息不足等问题,广泛应用与电商、金融、新闻咨询、社交、旅游等行业,其中最典型并具有良好的发展和应用前景的领域就是电子商务领域。 在学术界,推荐系统同样是热门的研究方向,在各大顶会中的…

中文医学知识语言模型:BenTsao

介绍 BenTsao:[原名:华驼(HuaTuo)]: 基于中文医学知识的大语言模型指令微调 本项目开源了经过中文医学指令精调/指令微调(Instruction-tuning) 的大语言模型集,包括LLaMA、Alpaca-Chinese、Bloom、活字模型等。 我们基于医学知识图谱以及医…

LeetCode——二叉树篇(八)

刷题顺序及思路来源于代码随想录,网站地址:https://programmercarl.com 目录 236. 二叉树的最近公共祖先 235. 二叉搜索树的最近公共祖 迭代 递归 701. 二叉搜索树中的插入操作 450. 删除二叉搜索树中的节点 236. 二叉树的最近公共祖先 给定一个二…

【回味“经典”】DFS练习题解(工作分配问题,最大平台)

这篇文章是一年前写的 走进“深度搜索基础训练“,踏入c算法殿堂(四)和 走进“深度搜索基础训练“,踏入c算法殿堂(二)的重编版。 希望以此,唤起对那位故人的回忆。 【搜索与回溯算法】工作分配问…

python之Pandas

1.Pandas简介 Pandas 是 Python 语言的一个扩展程序库,用于数据分析。 Pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。 Pandas 一个强大的分析结构化数据的工具集…

【数据结构OJ题】相交链表

原题链接:https://leetcode.cn/problems/intersection-of-two-linked-lists/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 看到这道题,很容易想到的方法就是暴力求解,就是将一个链表的每个结点的地址…

校园二手物品交易平台/二手交易系统/基于java的校园跳蚤市场系统

​ 摘 要 本文论述了校园二手物品交易平台的设计和实现,该网站从实际运用的角度出发,运用了计算机网站设计、数据库等相关知识,网络和Mysql数据库设计来实现的,网站主要包括用户注册、用户登录、浏览商品、搜索商品、查看商品并进…

【数据结构】顺序队列模拟实现

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

React+Typescript从请求数据到列表渲染

我们在项目src目录下创建一个目录 叫 pages 在里面创建一个组件叫 list.tsx 这里 我启动了自己的java项目 创建接口 你们就也需要弄几个自己的接口做测试 然后 list.tsx 编写代码如下 import * as React from "react";export default class hello extends React.C…

uniapp 回退到指定页面 保存页面状态

uniapp 历史页面回退到指定页面。 getCurrentPages() 内容如下 let delta getCurrentPages().reverse().findIndex(item > item.route "pages/popularScience/daodi") if(delta-1){uni.navigateTo({url: /pages/popularScience/daodi,success: res > {},fa…

Blazor前后端框架Known-V1.2.13

V1.2.13 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行。 Gitee: https://gitee.com/known/KnownGithub:https://github.com/known/Known 概述 基于C#和Blazo…

element+vue 表格行拖拽功能

解决方案 使用 sortable.js 步骤一&#xff1a; 安装 npm install vuedraggable步骤二&#xff1a;引入 import Sortable from sortablejs;步骤三&#xff1a; el-table 添加row-key属性&#xff0c;外层包一层 sortableDiv <div class"sortableDiv"> 拖…

学习开发振弦采集模块的注意事项

学习开发振弦采集模块的注意事项 &#xff08;三河凡科科技/飞讯教学&#xff09;振弦采集模块是一种用来实时采集和处理振弦信号的电子设备&#xff0c;在工业、航空、医疗等领域都有广泛应用。学习开发振弦采集模块需要注意以下几点&#xff1a; 一、硬件选择 首先需要选择…