记录 1 道算法题
二叉搜索树中的第 K 小的元素
230. 二叉搜索树中第K小的元素 - 力扣(LeetCode) (leetcode-cn.com)
二叉搜索树的特点是中序遍历时是一个升序排列,所以我们只需要中序遍历然后到第 k 个的时候中断返回就行了。
另外,第 K 小,看到这几个字的时候,其实我们也可以用堆来解题,遍历二叉树的方式可以是深度也可以是广度。
- 循环
function kthSmallest(root, k) {
const stack = []
while (stack.length > 0 || root) {
while (root) {
stack.push(root)
root = root.left
}
root = stack.pop()
if (--k === 0) {
return root.val
}
root = root.right
}
}
- 递归
function kthSmallest(root, k) {
if (!root) return
let res
function _(root) {
if (!root) return
_(root.left)
if (--k === 0) {
res = root.val
}
_(root.right)
}
_(root)
return res
}