【 每天学习一点算法 2026/03/14】二叉搜索树中第K小的元素

每天学习一点算法 2026/03/14

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

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

  1. 首先想到的就是先遍历,再排序,再找到第 k 小的元素

    typescript 复制代码
    /**
     * Definition for a binary tree node.
     * class TreeNode {
     *     val: number
     *     left: TreeNode | null
     *     right: TreeNode | null
     *     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
     *         this.val = (val===undefined ? 0 : val)
     *         this.left = (left===undefined ? null : left)
     *         this.right = (right===undefined ? null : right)
     *     }
     * }
     */
    
    function kthSmallest(root: TreeNode | null, k: number): number {
      const res: number[] = []
      function helper (root: TreeNode | null) {
        if (root === null) return null
        res.push(root.val)
        helper(root.left)
        helper(root.right)
      }
      helper(root)
      return res.sort((a, b) => a - b)[k - 1]
    };
  2. 根据二叉树的特性:每个节点的左子树的结点一定比这个节点小,右子树的结点一定比这个节点大,那么二叉树的中序遍历结果一定是递增的,所以我们可以省去排序的步骤

    typescript 复制代码
    function kthSmallest(root: TreeNode | null, k: number): number {
      const res: number[] = []
      function helper (root: TreeNode | null) {
        if (root === null) return null
        helper(root.left)
        res.push(root.val)
        helper(root.right)
      }
      helper(root)
      return res[k - 1]
    };

题目来源:力扣(LeetCode)

相关推荐
念越1 分钟前
算法每日一题 Day08|双指针法解决三数之和
算法·力扣
黎阳之光21 分钟前
黎阳之光透明管理:视频孪生重构智慧仓储新范式
人工智能·算法·安全·重构·数字孪生
-Marks-41 分钟前
【C++编程】STL简介 --- (是什么 | 版本发展历程 | 六大组件 | 重要性缺陷以及如何学习)
开发语言·c++·学习·stl·stl版本
CappuccinoRose1 小时前
回溯法 - 软考备战(四十三)
算法·排列组合·路径·n皇后·子集·解数独·岛屿
AC赳赳老秦1 小时前
OpenClaw进阶技巧:批量修改文件内容、替换关键词,解放双手
java·linux·人工智能·python·算法·测试用例·openclaw
Robot_Nav2 小时前
Shape-Aware MPPI(SA MPPI)算法:基于RC-ESDF的任意形状机器人实时轨迹优化
算法·机器人·sa-mppi
Joseph Cooper2 小时前
STM32MP157 Linux驱动学习笔记(四):典型总线与设备模型(SPI/USB)
linux·stm32·学习
2401_827499993 小时前
数据分析学习05(黑马)-Pandas
学习·数据分析·pandas
小O的算法实验室3 小时前
2026年ESWA,自适应基于排序的协同进化学习粒子群算法+边缘计算服务器部署,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
cpp_25013 小时前
P1832 A+B Problem(再升级)
数据结构·c++·算法·动态规划·题解·洛谷·背包dp