https://leetcode.cn/problems/kth-smallest-element-in-a-bst/
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。
示例 :

输入:root = [3,1,4,null,2], k = 1 输出:1
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
public class hot230 {
private int count = 0; // 记录已访问的节点数量
private int result = 0; // 存储第k小的元素
public int kthSmallest(TreeNode root, int k) {
inorderTraversal(root, k);
return result;
}
private void inorderTraversal(TreeNode node, int k) {
// 基础情况:节点为空或已经找到结果
if (node == null || count >= k) {
return;
}
// 遍历左子树
inorderTraversal(node.left, k);
// 处理当前节点
count++;
if (count == k) {
result = node.val;
return; // 提前结束遍历
}
// 遍历右子树
inorderTraversal(node.right, k);
}
}
1002

被折叠的 条评论
为什么被折叠?



