[路飞]_LeetCode_230. 二叉搜索树中第K小的元素

115 阅读1分钟

题目

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

示例 1:

image.png

输入:root = [3,1,4,null,2], k = 1
输出:1

来源:力扣(LeetCode)leetcode-cn.com/problems/kt…

解题思路

根据二叉搜索树的特点,根节点的值比左子树中每个节点的值大,比又子树中每个节点的值小。通过中序遍历可以得到一个有序的升序序列。所以通过中序遍历取第 k 个节点就可以了。

代码实现

var kthSmallest = function(root, k) {
    let ans = 0

    function inorderTraversal(root) {
        if(!root) return
        inorderTraversal(root.left)
        if (--k === 0) {
            ans = root.val
        }
        inorderTraversal(root.right)
    }

    inorderTraversal(root)

    return ans
};

如有错误欢迎指出,欢迎一起讨论!