230. 二叉搜索树中第K小的元素 --力扣 --JAVA

简介: 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

 题目

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

解题思路

    1. 利用List存储数据;
    2. 遍历整个树,读取数各个节点的value;
    3. 对value进行排序,获取第k个最小值。

    代码展示

    class Solution {
        private List<Integer> list = new ArrayList<>();
        public int kthSmallest(TreeNode root, int k) {
            getVal(root);
            list.sort(null);
            return list.get(k - 1);
        }
        private void getVal(TreeNode root){
            if(root == null){
                return;
            }
            list.add(root.val);
            getVal(root.left);
            getVal(root.right);
        }
    }

    image.gif


    目录
    相关文章
    |
    3月前
    |
    存储 缓存 安全
    除了变量,final还能修饰哪些Java元素
    在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
    43 2
    |
    4月前
    |
    存储 Java
    深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
    【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
    60 3
    |
    11天前
    |
    存储 算法 Java
    解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
    在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
    |
    3月前
    |
    Java
    那些与Java Set擦肩而过的重复元素,都经历了什么?
    在Java的世界里,Set如同一位浪漫而坚定的恋人,只对独一无二的元素情有独钟。重复元素虽屡遭拒绝,但通过反思和成长,最终变得独特,赢得了Set的认可。示例代码展示了这一过程,揭示了成长与独特性的浪漫故事。
    36 4
    |
    3月前
    |
    存储 Java
    判断一个元素是否在 Java 中的 Set 集合中
    【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
    |
    3月前
    |
    存储 算法 Java
    为什么Java Set如此“挑剔”,连重复元素都容不下?
    在Java的集合框架中,Set是一个独特的接口,它严格要求元素不重复,适用于需要唯一性约束的场景。Set通过内部数据结构(如哈希表或红黑树)和算法(如哈希值和equals()方法)实现这一特性,自动过滤重复元素,简化处理逻辑。示例代码展示了Set如何自动忽略重复元素。
    41 1
    |
    4月前
    |
    Java 开发者
    在Java集合世界中,Set以其独特的特性脱颖而出,专门应对重复元素
    在Java集合世界中,Set以其独特的特性脱颖而出,专门应对重复元素。通过哈希表和红黑树两种模式,Set能够高效地识别并拒绝重复元素的入侵,确保集合的纯净。无论是HashSet还是TreeSet,都能在不同的场景下发挥出色的表现,成为开发者手中的利器。
    42 2
    |
    算法 Java
    二叉搜索树及Java实现
    二叉搜索树及Java实现
    209 0
    二叉搜索树及Java实现
    |
    2天前
    |
    Java 程序员 开发者
    Java社招面试题:一个线程运行时发生异常会怎样?
    大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
    35 14
    |
    5天前
    |
    安全 Java 程序员
    Java 面试必问!线程构造方法和静态块的执行线程到底是谁?
    大家好,我是小米。今天聊聊Java多线程面试题:线程类的构造方法和静态块是由哪个线程调用的?构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节有助于掌握Java多线程机制。下期再见! 简介: 本文通过一个常见的Java多线程面试题,详细讲解了线程类的构造方法和静态块是由哪个线程调用的。构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节对掌握Java多线程编程至关重要。
    34 13