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

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

文章目录

题目描述


思路及解法

1.由二叉搜索树 的性质我们易得若中序遍历一棵二叉搜索树,则会得到一个递增的有序序列

2.则我们中序遍历 一棵二叉搜索树,同时记录一个int变量rangk 每次在中序操作时让rank自增,等于k时直接结束递归并返回当前的节点值;

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为二叉搜索树的节点的个数

空间复杂度:

O ( h e i g h t ) O(height) O(height);其中 h e i g h t height height为二叉搜索树的高度

Code

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    //Records the final result
    int res = 0;
    //Records the location of the current in-order traversal node
    int rank = 0;
    /**
     * Finds the KTH smallest element in a binary search tree
     *
     * @param root The root of binary tree
     * @param k The given number
     * @return int
     */
    int kthSmallest(TreeNode* root, int k) {
        if (root == nullptr) {
            return 0;
        }
        inorderedTraver(root, k);
        return res;
    }

    /**
     * Inorder traversal function
     * 
     * @param root The given number
     * @param k The given number
     */
    void inorderedTraver(TreeNode* root, int k) {
        if (root == nullptr) {
            return;
        }
        inorderedTraver(root -> left, k);
        rank++;
        if (rank == k) {
            res = root -> val;
            return;
        }
        inorderedTraver(root -> right, k);
    }
};
相关推荐
2601_956121971 天前
二分算法(知识点+题目)
c++·算法
AndrewHZ1 天前
【LLM技术全景】阶段总结:技术原理篇核心知识回顾
人工智能·深度学习·算法·语言模型·大模型·llm·芯片开发
职场的momo1 天前
五年后端终面被追问方案,技术输出该如何守边界
职场和发展
小星星闪亮登场1 天前
2026萌新联赛第三场-- (郑州轻工业大学)
数据结构·c++·经验分享·算法·贪心算法·排序算法·深度优先
冻柠檬飞冰走茶1 天前
PTA基础编程题目集 7-8超速判断(C++语言实现)
开发语言·数据结构·c++·算法
玖玥拾1 天前
LeetCode 88 合并两个有序数组
算法·leetcode
数据皮皮侠AI1 天前
上市公司数字供应链金融指数(2010-2024)
大数据·人工智能·算法
小程故事多_801 天前
用GRPO算法重塑多智能体系统,从原理落地到复杂任务规划实战
人工智能·算法
Hi李耶1 天前
【LeetCode】541.反转字符串 II
算法·leetcode·职场和发展
shylyly_1 天前
104.二叉树的最大深度
数据结构·算法·104.二叉树的最大深度