当前位置: 首页 > news >正文

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

各位看官们,大家好啊,今天这个题我用的方法时间复杂度比较高,但也是便于便于理解的一种方法,大家如果觉得的好的话,就给个免费的赞吧,谢谢大家了^ _ ^
题目要求如图所示:
在这里插入图片描述
题目步骤:
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;
}

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

相关文章:

  • Android中蓝牙设备的状态值管理
  • Java:缓存行和伪共享
  • Mysql中索引详解
  • VS2019+QT5.15调用动态库dll带有命名空间
  • 分布式文件存储 - - - MinIO从入门到飞翔
  • Verilog-Behavior Level 和 RTL Level 和 GATE Level的区别
  • Git工具
  • flutter中采用腾讯云COS进行图片存储
  • Flutter 实现dispose探测控件
  • 图像处理:Python使用OpenCV进行图像锐化 (非锐化掩模、拉普拉斯滤波器)
  • R调用Taxonkit展示系统发育信息
  • c++_0基础_讲解7 练习
  • C++中的中介者模式
  • 2.linux下的文件系统结构、磁盘管理以及常规操作
  • Excel中多条件判断公式怎么写?
  • C++11: atomic 头文件
  • Docker容器管理
  • express + mock 让前后台并行开发
  • in typeof instanceof ===这些运算符有什么作用
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Linux各目录及每个目录的详细介绍
  • Sequelize 中文文档 v4 - Getting started - 入门
  • sessionStorage和localStorage
  • Zepto.js源码学习之二
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 前端面试题总结
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 使用parted解决大于2T的磁盘分区
  • 跳前端坑前,先看看这个!!
  • 通信类
  • 移动端 h5开发相关内容总结(三)
  • 如何正确理解,内页权重高于首页?
  • ​你们这样子,耽误我的工作进度怎么办?
  • #if 1...#endif
  • (10)STL算法之搜索(二) 二分查找
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (剑指Offer)面试题34:丑数
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (四) 虚拟摄像头vivi体验
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)Google的Objective-C编码规范
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)shell调试方法
  • (转)菜鸟学数据库(三)——存储过程
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .Net的DataSet直接与SQL2005交互
  • .net和php怎么连接,php和apache之间如何连接
  • .NET学习全景图
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @Documented注解的作用