力扣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);
    }
};
相关推荐
int型码农3 小时前
数据结构第八章(一) 插入排序
c语言·数据结构·算法·排序算法·希尔排序
UFIT3 小时前
NoSQL之redis哨兵
java·前端·算法
喜欢吃燃面3 小时前
C++刷题:日期模拟(1)
c++·学习·算法
SHERlocked933 小时前
CPP 从 0 到 1 完成一个支持 future/promise 的 Windows 异步串口通信库
c++·算法·promise
怀旧,3 小时前
【数据结构】6. 时间与空间复杂度
java·数据结构·算法
积极向上的向日葵3 小时前
有效的括号题解
数据结构·算法·
GIS小天4 小时前
AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月7日第101弹
人工智能·算法·机器学习·彩票
_Itachi__4 小时前
LeetCode 热题 100 74. 搜索二维矩阵
算法·leetcode·矩阵
不忘不弃4 小时前
计算矩阵A和B的乘积
线性代数·算法·矩阵
不爱写代码的玉子4 小时前
HALCON透视矩阵
人工智能·深度学习·线性代数·算法·计算机视觉·矩阵·c#