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

leetcode刷题日记——二叉搜索树中第 K 小的元素

[ 题目描述 ]:
在这里插入图片描述
[ 思路 ]:

  • 可以通过中序遍历二叉搜索树获取节点的有序数列,然后通过访问第 k-1 个元素,来获取第 k 小的值
  • 运行如下
    在这里插入图片描述
void getInOrder(struct TreeNode* root,int* inOrder,int* returnSize){if(!root){return ;}getInOrder(root->left,inOrder,returnSize);inOrder[(*returnSize)++]=root->val;getInOrder(root->right,inOrder,returnSize);
}int kthSmallest(struct TreeNode* root, int k) {int inOrder[10000];int returnSize=0;getInOrder(root,inOrder,&returnSize);return inOrder[k-1];
}

[ 官方题解 ]:

  • 方法一:中序遍历,通过栈实现存储,大致思路一致
  • 方法二:记录子树的结点数,令 node 等于根结点,开始搜索。
    • 如果 node 的左子树的结点数 left 小于 k−1,则第 k 小的元素一定在 node 的右子树中,令 node 等于其的右子结点,k 等于 k−left−1,并继续搜索;
    • 如果 node 的左子树的结点数 left 等于 k−1,则第 k 小的元素即为 node ,结束搜索并返回 node 即可;
    • 如果 node 的左子树的结点数 left 大于 k−1,则第 k 小的元素一定在 node 的左子树中,令 node 等于其左子结点,并继续搜索。
  • 方法三:平衡二叉搜索树
http://www.xdnf.cn/news/12783.html

相关文章:

  • MIT 6.S081 Lab 11 networking
  • RD-Agent-Quant:一个以数据为中心的因素与模型联合优化的多智能体框架
  • CANoe trace里面显示的Time 具体是什么意思
  • Python抽象基类实战:构建广告轮播框架ADAM的核心逻辑
  • Python绘制三十六计
  • OGG 23ai for DAA 部署与补丁升级
  • 雪花ID问题诊断与解决方案
  • C++调试(肆):WinDBG分析Dump文件汇总
  • stm32内存踩踏一例
  • 高斯消元法及其扩展
  • 【2025年软考中级】第二章2.3 编译程序基本原理
  • 当数据包从上层移动到下层时,OSI 模型中会发生什么?
  • Go爬虫开发学习记录
  • 从内存角度透视现代C++关键特性
  • freeRTOS 互斥量优先级继承机制函数实现xQueueGenericReceive()
  • C++ 信息学奥赛总复习题答案解析(第一章)
  • 电脑商城--用户注册登录
  • 步进电机调试记录(先让我的步进电机转起来)
  • 【Java学习笔记】String类(重点)
  • 沉金电路板的黑盘缺陷挑战与解决方案——高密度互连设计的关键考量
  • Jina AI 开源 node-DeepResearch
  • [面试精选] 0094. 二叉树的中序遍历
  • 【单源最短路经】Dijkstra 算法(朴素版和堆优化版)、Bellman-Ford 算法、spfa 算法 及 负环判断
  • win10环境配置-openpose pytorch版本
  • 网络协议通俗易懂详解指南
  • MyBatis 获取插入数据后的自增 ID 值
  • GoC指令测试卷 A
  • 【AI学习】wirelessGPT多任务无线基础模型摘要
  • 安卓小说阅读软件推荐
  • c++ 静态成员变量