给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 个最小的元素。

说明:
你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。

示例 1:

输入: root = [3,1,4,null,2], k = 13/ \1   4\2
输出: 1

示例 2:

输入: root = [5,3,6,2,4,null,null,1], k = 35/ \3   6/ \2   4/1
输出: 3

进阶:
如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化 kthSmallest 函数?

/**
 * 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 cnt = 0;
        stack<TreeNode*> s;
        TreeNode *p = root;
        while (p || !s.empty()) {
            while (p) {
                s.push(p);
                p = p->left;
            }
            p = s.top(); s.pop();
            ++cnt;
            if (cnt == k) return p->val;
            p = p->right;
        }
        return 0;
    }
};

230.二叉搜索树中第K小的元素相关推荐

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

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

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

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

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

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

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

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

  5. 力扣题目——230. 二叉搜索树中第K小的元素

    注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查 ...

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

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

  7. leetcode 230. Kth Smallest Element in a BST | 230. 二叉搜索树中第K小的元素(Java)

    题目 https://leetcode.com/problems/kth-smallest-element-in-a-bst/ 题解 方法1:中序遍历+剪枝 import java.util.Arra ...

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

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

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

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

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

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

最新文章

  1. 优酷智能档在大型直播场景下的技术实践
  2. 英特尔软件学院与中国一起迎接2008
  3. 百度地图滚轮缩放,所在点偏移问题
  4. linux 丢包排查思路简述(tcp+rdma)
  5. hdu 6899 Xor 数位dp
  6. AFN\HTTPS\UIWebView
  7. LDAP----manage-account
  8. 判断用户输入的这个数是不是质数
  9. Android学习笔记(18):编辑框EditText
  10. python与开源gis_Python与开源GIS:数据处理、空间分析与地图制图
  11. 哔哩哔哩谷歌浏览器助手Mac版分享来了
  12. 回溯算法高效解标准数独
  13. 数据库查询语句内连接外连接效率
  14. SpringBoot项目运行时出现A cookie header was received警告问题
  15. Android 环信 客服集成
  16. 可惜知乎没有注销账号的选项
  17. 4.1_[Java 输入输出]-全网最全 Java 控制台输入输出
  18. 抽象类和接口不能直接实例?
  19. java字符串转成utf-8_将字符串的编码格式转换为utf-8
  20. NOIP提高组初赛[选择题知识点汇总]

热门文章

  1. IAT 注入ImportInject(dll)
  2. Reinvent the Wheel Often
  3. 20款最优秀的JavaScript编辑器
  4. c# ThreadPoold使用心得
  5. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 大型软件系统客户端数据同步的问题解决...
  6. 随手写了个android应用
  7. STC学习:红外测试
  8. STC学习:光敏开关
  9. C程序设计--结构体+单向链表
  10. html全屏代码怎么写,JS实现全屏的四种写法