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


    目录
    相关文章
    |
    19天前
    |
    存储 缓存 安全
    除了变量,final还能修饰哪些Java元素
    在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
    22 2
    |
    2月前
    |
    存储 Java
    深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
    【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
    43 3
    |
    2月前
    |
    Java
    在Java的世界里,Set只接纳独一无二的元素。
    【10月更文挑战第16天】在Java的世界里,Set只接纳独一无二的元素。本文通过拟人化的手法,讲述了重复元素从初次尝试加入Set被拒绝,到经历挣扎、反思,最终通过改变自己,成为独特个体并被Set接纳的全过程。示例代码展示了这一过程的技术实现。
    25 1
    |
    25天前
    |
    Java
    那些与Java Set擦肩而过的重复元素,都经历了什么?
    在Java的世界里,Set如同一位浪漫而坚定的恋人,只对独一无二的元素情有独钟。重复元素虽屡遭拒绝,但通过反思和成长,最终变得独特,赢得了Set的认可。示例代码展示了这一过程,揭示了成长与独特性的浪漫故事。
    20 4
    |
    1月前
    |
    存储 Java
    判断一个元素是否在 Java 中的 Set 集合中
    【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
    |
    1月前
    |
    存储 算法 Java
    为什么Java Set如此“挑剔”,连重复元素都容不下?
    在Java的集合框架中,Set是一个独特的接口,它严格要求元素不重复,适用于需要唯一性约束的场景。Set通过内部数据结构(如哈希表或红黑树)和算法(如哈希值和equals()方法)实现这一特性,自动过滤重复元素,简化处理逻辑。示例代码展示了Set如何自动忽略重复元素。
    28 1
    |
    2月前
    |
    Java 开发者
    在Java集合世界中,Set以其独特的特性脱颖而出,专门应对重复元素
    在Java集合世界中,Set以其独特的特性脱颖而出,专门应对重复元素。通过哈希表和红黑树两种模式,Set能够高效地识别并拒绝重复元素的入侵,确保集合的纯净。无论是HashSet还是TreeSet,都能在不同的场景下发挥出色的表现,成为开发者手中的利器。
    27 2
    |
    12天前
    |
    设计模式 Java 开发者
    Java多线程编程的陷阱与解决方案####
    本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
    |
    10天前
    |
    存储 监控 小程序
    Java中的线程池优化实践####
    本文深入探讨了Java中线程池的工作原理,分析了常见的线程池类型及其适用场景,并通过实际案例展示了如何根据应用需求进行线程池的优化配置。文章首先介绍了线程池的基本概念和核心参数,随后详细阐述了几种常见的线程池实现(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特点及使用场景。接着,通过一个电商系统订单处理的实际案例,分析了线程池参数设置不当导致的性能问题,并提出了相应的优化策略。最终,总结了线程池优化的最佳实践,旨在帮助开发者更好地利用Java线程池提升应用性能和稳定性。 ####
    |
    12天前
    |
    缓存 Java 开发者
    Java多线程编程的陷阱与最佳实践####
    本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####