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);
    }
}
相关推荐
三84422 分钟前
webshell缓存绕过/哈希碰撞
算法·哈希算法
致Great7 小时前
Pi 的上下文压缩,到底是怎么工作的?
算法
watersink8 小时前
机器学习聚类算法
算法·机器学习·聚类
luj_17689 小时前
桥牌思维启示:系统设计的模块化架构
c语言·开发语言·c++·经验分享·算法
饼饼学习空间智能11 小时前
家庭服务机器人训练数据怎么积累?仿真、真实采集与持续学习的技术路线分析
人工智能·算法·机器学习
蛋先生DX12 小时前
你瘦不下来但大模型可以:量化原理了解一下
深度学习·算法·llm
牛阿大13 小时前
LQR算法
算法
(╹◡╹)14 小时前
18.剪枝
算法·机器学习·剪枝
Fa_Mian_Tuan15 小时前
图论基础|邻接矩阵超详细讲解(含无向/有向/带权图+完整可运行C语言代码)
c语言·数据结构·笔记·算法·图论