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

题目描述

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false

示例

示例 1:

复制代码
输入:root = [3,1,4,null,2], k = 1
输出:1

示例 2:

复制代码
输入:root = [5,3,6,2,4,null,null,1], k = 3
输出:3

解法

1.辅助数组

解题思路

创建一个数组,中序遍历链表,把二叉树中的元素依次加入数组中,由于二叉搜索树性质,得到的数组是非减的,这样就可以直接返回第K小的元素。

cpp 复制代码
class Solution {
public: 
    int kthSmallest(TreeNode* root, int k) {
        vector <int> temp;
        Helper(root,temp);
        return temp[k - 1];
    }


    void Helper(TreeNode* root,vector <int>& temp){
        if(!root) return;
        Helper(root -> left,temp);
        temp.push_back(root -> val);
        Helper(root -> right,temp);
        return;
    }
};

时间复杂度O(N),空间复杂度O(N)

2.计数法

解题思路:

如果要求不占用额外空间,则我们需要设计一个计数器,计数器达到k时,立马返回节点的值。

cpp 复制代码
class Solution {
public: 
    int count = 0;
    int kthSmallest(TreeNode* root, int k) {
        int ans;
        Helper(root,ans,k);
        return ans;
    }


    void Helper(TreeNode* root,int &ans,int k){
        if(!root) return;
        Helper(root -> left,ans,k);
        count ++;
        if(count == k){
            ans = root -> val;
            return;
        }
        Helper(root -> right,ans,k);
    }
};

时间复杂度O(N),空间复杂度O(1)

相关推荐
程序员小远6 小时前
软件测试之压力测试详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·压力测试
Scc_hy6 小时前
强化学习_Paper_2000_Eligibility Traces for Off-Policy Policy Evaluation
人工智能·深度学习·算法·强化学习·rl
leke20037 小时前
2025年10月17日
算法
CoovallyAIHub7 小时前
Mamba-3震撼登场!Transformer最强挑战者再进化,已进入ICLR 2026盲审
深度学习·算法·计算机视觉
Aqua Cheng.7 小时前
代码随想录第七天|哈希表part02--454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
java·数据结构·算法·散列表
怀揣小梦想7 小时前
跟着Carl学算法--哈希表
数据结构·c++·笔记·算法·哈希算法·散列表
Nebula_g7 小时前
Java哈希表入门详解(Hash)
java·开发语言·学习·算法·哈希算法·初学者
Kent_J_Truman7 小时前
【模拟散列表】
数据结构·算法·蓝桥杯·散列表·常识类
Lchiyu7 小时前
哈希表 | 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和
算法
玩镜的码农小师兄7 小时前
[从零开始面试算法] (04/100) LeetCode 136. 只出现一次的数字:哈希表与位运算的巅峰对决
c++·算法·leetcode·面试·位运算·hot100