Const
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) } }
/**
* 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 {
let ans = -Infinity;
function dfs(node: TreeNode | null) {
if (!node) {
return;
}
dfs(node.left);
if (k > 0) {
ans = Math.max(ans, node.val);
k--;
}
dfs(node.right);
}
dfs(root);
return ans;
};
230.二叉搜索树中第K小的元素
给你一棵二叉搜索树的根节点
root
和一个整数k
,请你设计一个算法查找其中第k
小的元素(从 1 开始计数)。示例 1:
输入:
root = [3,1,4,null,2]
,k = 1
输出:
1
示例 2:
输入:
root = [5,3,6,2,4,null,null,1]
,k = 3
输出:
3
提示:
n
1 <= k <= n <= 10^4
0 <= Node.val <= 10^4
进阶: