力扣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);
    }
};
相关推荐
谎言西西里5 小时前
LeetCode 热题100 --- 双指针专区
算法
leo__5208 小时前
基于两步成像算法的聚束模式SAR MATLAB实现
开发语言·算法·matlab
前端小白在前进9 小时前
力扣刷题:在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·leetcode
某林21210 小时前
基于SLAM Toolbox的移动机器人激光建图算法原理与工程实现
stm32·嵌入式硬件·算法·slam
修炼地10 小时前
代码随想录算法训练营第四十三天 | 图论理论基础、深搜理论基础、卡码网98. 所有可达路径、797. 所有可能的路径、广搜理论基础
算法·深度优先·图论
iAkuya10 小时前
(leetcode)力扣100 23反转链表(迭代||递归)
算法·leetcode·链表
剪一朵云爱着10 小时前
PAT 1095 Cars on Campus
算法·pat考试
FreeBuf_11 小时前
朝鲜黑客组织“传染性面试“瞄准macOS:新型“DriverFixer“窃密工具浮出水面
macos·面试·职场和发展
牛客企业服务11 小时前
AI面试实用性解析:不是“能不能用”,而是“怎么用好”
人工智能·面试·职场和发展
MicroTech202511 小时前
激光点云快速配准算法创新突破,MLGO微算法科技发布革命性点云配准算法技术
人工智能·科技·算法