题目
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
示例 1:
输入: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
};
如有错误欢迎指出,欢迎一起讨论!