【每日一题】LeetCode 230. 二叉搜索树中第 K 小的元素 TypeScript
·
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 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 <= 1040 <= Node.val <= 104
注意:
二叉搜索树:是指满足 左节点>根节点>右节点 的二叉树
所以:
可以通过中序遍历,给二叉树“排序”,按升序遍历二叉树
第k个小的元素就是,“升序遍历”的第k个位置的值
/**
* 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 count = 0
let result = 0
const inorder = (node:TreeNode | null ):void =>{
if(!node || count>k) return
inorder(node.left)
count++
if(count===k){
result = node.val
return
}
inorder(node.right)
}
inorder(root)
return result
};
/**
* 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 {
//count是计数器,指遍历到了哪一位
let count = 0
//result存放符合条件的val值
let result = 0
const inorder = (node:TreeNode | null ):void =>{
if(!node || count>k) return
inorder(node.left)
count++
if(count===k){
result = node.val
return
}
inorder(node.right)
}
inorder(root)
return result
};
共勉
更多推荐



所有评论(0)