每天一道LeetCode-----寻找二叉搜索树中第k小的元素
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小的元素相关推荐
- LeetCode 230. 二叉搜索树中第K小的元素(中序遍历)
文章目录 1. 题目信息 2. 解题 2.1 中序递归 2.2 中序循环写法 1. 题目信息 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以 ...
- 73. Leetcode 230. 二叉搜索树中第K小的元素 (二叉搜索树-中序遍历类)
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数).示例 1:输入:root = [3,1,4,null,2], k = 1 输出 ...
- LeetCode 230. 二叉搜索树中第K小的元素(递归)
题目描述 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. 思路 详见链接 代码 c ...
- LeetCode 230二叉搜索树中第k小的元素
思路: ※一.中序遍历,找第k个元素 class Solution { public:vector<int>res;void inorder(TreeNode *root){if(root ...
- 记录:2022-9-30 打家劫舍 二叉搜索树中第K小的元素 公平锁 磁盘调度
学习时间:2022-9-30 学习内容 1.LeetCode 198. 打家劫舍 思路 dp[i] = dp[i-1]之前的最大值 + num[i] 优化思路:把最大值用一个变量来存 代码 class ...
- leetcode230. 二叉搜索树中第K小的元素(中序遍历)
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素.说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数.示例 1:输入: root = [3, ...
- 【LeetCode】230#二叉搜索树中第K小的元素
题目描述 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. 示例 1: 输入: ro ...
- LeetCode实战:二叉搜索树中第K小的元素
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...
- 【Leetcode | 49】230. 二叉搜索树中第K小的元素
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. 示例 1: 输入: root = ...
最新文章
- apache httpd服务器403 forbidden的问题
- 三维家导入户型镜像怎么使用_UG虎钳三维建模教学,认真看仔细学习了!
- UWP图片编辑器(涂鸦、裁剪、合成)
- 关于二叉堆(优先队列)的其他操作及其应用
- github注册账号一直验证失败
- 一套存储承载全场景,XSKY星辰天合发布企业级SDS V5系列
- python:No module named ‘pywt‘解决办法
- Spark基础学习笔记23:DataFrame与Dataset
- 利用AWVS进行反制
- python自动保存图片_python抓取豆瓣图片并自动保存示例学习
- 重温51汇编指令(附实验)
- FreeMarker模板导出pdf,页码,页脚,分页等
- 国产FPGA芯片资源性能对照比较一览表
- 最新整理:阿里、腾讯、字节、华为、百度等大厂Android岗面经分享!
- 如何关闭计算机触摸鼠标,怎么关闭笔记本键盘-笔记本电脑如何禁用触摸板
- [技术发展-24]:现有物联网通信技术特点
- 上海/深圳/香港内推 | 商汤科技EIG研究中心招聘AI算法研究员/实习生
- python 领英爬虫
- 【PTA~L1-006 连续因子】
- 计算机硬件加速怎么开,电脑中如何开启3d硬件加速|电脑开启3d硬件加速图文教程...