当前位置: 首页 > article >正文

LeetCode [中等] 二叉树中序—二叉搜索树中第K小的元素

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

二叉搜索树具有如下性质:

  • 结点的左子树只包含小于当前结点的数。

  • 结点的右子树只包含大于当前结点的数。

  • 所有左子树和右子树自身必须也是二叉搜索树。

二叉树的中序遍历即按照访问左子树——根结点——右子树的方式遍历二叉树;在访问其左子树和右子树时,我们也按照同样的方式遍历;直到遍历完整棵树。

因为二叉搜索树和中序遍历的性质,所以二叉搜索树的中序遍历是按照键增加的顺序进行的。于是,我们可以通过中序遍历找到第 k 个最小元素。

public class Solution {
    public int KthSmallest(TreeNode root, int k) {
        List<int> res = new List<int>();
        Stack<TreeNode> stack = new Stack<TreeNode>();
        while(stack.Count > 0 || root != null)
        {
            while(root != null)
            {
                stack.Push(root);
                root = root.left;
            }
            root = stack.Pop();
            res.Add(root.val);
            root = root.right;
        }
        return res[k - 1];
    }
}


http://www.kler.cn/a/156682.html

相关文章:

  • 硬件工程师之电子元器件—二极管(4)之热量对二极管温度特性的影响
  • 用MVVM设计模式提升WPF开发体验:分层架构与绑定实例解析
  • Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解
  • Java 多线程(三)—— 死锁
  • Docker compose部署portainer
  • WEB攻防-通用漏洞SQL注入sqlmapOracleMongodbDB2等
  • 【wvp】测试记录
  • 百度收录批量查询工具,免费SEO优化排名工具
  • 【有ISSN、ISBN号!往届均已完成EI检索】第三届电子信息工程、大数据与计算机技术国际学术会议(EIBDCT 2024)
  • Java BIO、NIO、AIO 有什么区别?
  • git merge和git rebase
  • 原生input实现上传文件
  • Java | 数据一致性校验遇到的时间序列化格式不一致问题如何解决?
  • MySQL 的 NULL 是怎么存储的?
  • 17:00面试,17:06就出来了,问的问题有点变态。。
  • 四、Zookeeper节点类型
  • 【UGUI】sprite精灵的创建与编辑
  • vue3+ts项目中导入组件时报错has no default export
  • iOS代码安全加固利器:深入探讨字符串和代码混淆器的作用
  • Linux-chrpath指令
  • CTF特训日记day3
  • 【Linux】cp 命令使用
  • PHP数组面试题
  • LeetCode 232.用栈实现队列
  • 9、Qt使用随机验证码
  • SASE,移动办公的安全防御小能手