Kth Smallest Element in a BST

原题链接Kth Smallest Element in a BST

给顶一个二叉搜索树的根节点,找到这棵数第k小的值

两种方法

  • 递归法的中序遍历
  • 迭代法的中序遍历

递归法,常规的中序遍历

代码如下

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:int kthSmallest(TreeNode* root, int k) {int res = 0;inOrder(root, k, res);return res;}
private:void inOrder(TreeNode* root, int& k, int& res){if(!root || !k) return;inOrder(root->left, k, res);//找到k个数即可if(--k == 0)res = root->val;inOrder(root->right, k, res);}
};

迭代法,用栈实现

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:int kthSmallest(TreeNode* root, int k) {stack<TreeNode*> s;pushAllLeft(root, s);TreeNode* top = nullptr;while(k--){top = s.top();s.pop();//每弹出一个节点就将该节点的右子树的左边一列入栈pushAllLeft(top->right, s);}return top->val;}
private:void pushAllLeft(TreeNode*root, stack<TreeNode*>& s){while(root){s.push(root);root = root->left;}}
};

本题主要考察中序遍历,除了递归法最好可以熟悉迭代法的求解

每天一道LeetCode-----寻找二叉搜索树中第k小的元素相关推荐

  1. LeetCode 230. 二叉搜索树中第K小的元素(中序遍历)

    文章目录 1. 题目信息 2. 解题 2.1 中序递归 2.2 中序循环写法 1. 题目信息 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以 ...

  2. 73. Leetcode 230. 二叉搜索树中第K小的元素 (二叉搜索树-中序遍历类)

    给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数).示例 1:输入:root = [3,1,4,null,2], k = 1 输出 ...

  3. LeetCode 230. 二叉搜索树中第K小的元素(递归)

    题目描述 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. 思路 详见链接 代码 c ...

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

    思路: ※一.中序遍历,找第k个元素 class Solution { public:vector<int>res;void inorder(TreeNode *root){if(root ...

  5. 记录:2022-9-30 打家劫舍 二叉搜索树中第K小的元素 公平锁 磁盘调度

    学习时间:2022-9-30 学习内容 1.LeetCode 198. 打家劫舍 思路 dp[i] = dp[i-1]之前的最大值 + num[i] 优化思路:把最大值用一个变量来存 代码 class ...

  6. leetcode230. 二叉搜索树中第K小的元素(中序遍历)

    给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素.说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数.示例 1:输入: root = [3, ...

  7. 【LeetCode】230#二叉搜索树中第K小的元素

    题目描述 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. 示例 1: 输入: ro ...

  8. LeetCode实战:二叉搜索树中第K小的元素

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...

  9. 【Leetcode | 49】230. 二叉搜索树中第K小的元素

    给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. 示例 1: 输入: root = ...

最新文章

  1. apache httpd服务器403 forbidden的问题
  2. 三维家导入户型镜像怎么使用_UG虎钳三维建模教学,认真看仔细学习了!
  3. UWP图片编辑器(涂鸦、裁剪、合成)
  4. 关于二叉堆(优先队列)的其他操作及其应用
  5. github注册账号一直验证失败
  6. 一套存储承载全场景,XSKY星辰天合发布企业级SDS V5系列
  7. python:No module named ‘pywt‘解决办法
  8. Spark基础学习笔记23:DataFrame与Dataset
  9. 利用AWVS进行反制
  10. python自动保存图片_python抓取豆瓣图片并自动保存示例学习
  11. 重温51汇编指令(附实验)
  12. FreeMarker模板导出pdf,页码,页脚,分页等
  13. 国产FPGA芯片资源性能对照比较一览表
  14. 最新整理:阿里、腾讯、字节、华为、百度等大厂Android岗面经分享!
  15. 如何关闭计算机触摸鼠标,怎么关闭笔记本键盘-笔记本电脑如何禁用触摸板
  16. [技术发展-24]:现有物联网通信技术特点
  17. 上海/深圳/香港内推 | 商汤科技EIG研究中心招聘AI算法研究员/实习生
  18. python 领英爬虫
  19. 【PTA~L1-006 连续因子】
  20. 计算机硬件加速怎么开,电脑中如何开启3d硬件加速|电脑开启3d硬件加速图文教程...

热门文章

  1. 面试智力题:天平称球
  2. Confluence 实现公司wiki【转】
  3. Introduction to Cryto Crptocurrencies Lecture 1
  4. bzoj 3680 吊打xxx
  5. 开始食用grpc(之一)
  6. UVa 208 - Firetruck (回溯)
  7. (002)每日SQL学习:删除名称重复的数据
  8. SpringBoot入门:新一代Java模板引擎Thymeleaf(实践)
  9. Unity3D GUI学习之GUILayout控件及使用
  10. 爸爸我爱您(之十二)