hot100-41二叉搜索树中第K小的元素

一、题目

给定一个二叉搜索树的根节点root,和一个整数k,找出其中第k小的元素。

二、思路

1、二叉搜索树找第k小的数,中序遍历是升序数组,访问到第k个节点时,它的值就是答案。

三、代码

java 复制代码
class Solution {
    int res = 0,count;
    public int kthSmallest(TreeNode root, int k) {
        if(root == null) return 0;
        kthSmallest(root.left,k);
        if(++count == k) res = root.val;
        kthSmallest(root.right,k);
        return res;
    }
}

这个代码,找到了第k小的值仍然会遍历整个树。

下面是优化的代码

java 复制代码
class Solution {
    private int count = 0;
    private int result = 0;

    public int kthSmallest(TreeNode root, int k) {
        inorder(root, k);
        return result;
    }

    private void inorder(TreeNode node, int k) {
        if (node == null || count >= k) return; 

        inorder(node.left, k);

        count++;
        if (count == k) {
            result = node.val;
            return; 
        }

        inorder(node.right, k);
    }
}
相关推荐
XX風9 小时前
3.2K-means
人工智能·算法·kmeans
蒟蒻的贤10 小时前
leetcode链表
算法·leetcode·链表
Funny_AI_LAB10 小时前
AI Agent最新重磅综述:迈向高效智能体,记忆、工具学习和规划综述
人工智能·学习·算法·语言模型·agi
执着25910 小时前
力扣hot100 - 94、二叉树的中序遍历
数据结构·算法·leetcode
-dzk-10 小时前
【代码随想录】LC 707.设计链表
数据结构·c++·算法·链表
Dave.B11 小时前
vtkPolyDataConnectivityFilter 实用指南
算法·vtk
细节处有神明11 小时前
开源数据之历史气象数据的获取与使用
人工智能·python·算法
小白开始进步11 小时前
JAKA Zu12 机械臂运动学算法深度解析(含可视化方案)
python·算法·numpy
梵刹古音12 小时前
【C语言】 递归函数
c语言·数据结构·算法