力扣230
力扣230.二叉搜索树中第k个小的元素
首先还是放一下原题力扣230,下面是题目描述:

题目给的是一个二叉搜索树,想让我们找到从小到大的第k个元素。今天这道题比较简单,今天也只做了这一道题,算是休息一下。不过要是第一次做这类题可能一下想不到思路,可能会去遍历然后排序,或者用优先队列。不过我们根据昨天力扣98题的思路,二叉搜索树中序遍历是有序的,所以我们可以直接中序遍历,找到第k个元素就行了。下面是代码实现,递归一次百分百:
class Solution {
private int k;
private int s=0;
private int kthSmallestRes=0;
public int kthSmallest(TreeNode root, int k) {
this.k=k;
kthLargestM(root);
return kthSmallestRes;
}
public void kthLargestM(TreeNode root) {
if (root.left==null&&root.right==null) {
if (s<k){
s++;
if (s==k){
kthSmallestRes=root.val;
}
}
return;
}
if (root.left!=null){
kthLargestM(root.left);
}
if (s<k){
s++;
if (s==k){
kthSmallestRes=root.val;
return;
}
}
if (root.right!=null){
kthLargestM(root.right);
}
}
}
代码比较简单,理解起来问题应该不大,有问题可以直接评论区问我。