230. 二叉搜索树中第K小的元素
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
这题有思路,二叉搜索树中序遍历是有序的,第n小的就是中序遍历第n个,只需要维护好一个变量确定目前遍历到第几个节点了然后递归中序遍历就好了。我没写出来的原因在于一边递归一边返回不知道怎么写。这种情况都是要写一个新的方法来递归,返回不知道怎么写的话可以写全局变量,在递归过程中赋值。
最后参考了别人的写法自己写的解法
class Solution {
int count = 0;
int res;
public int kthSmallest(TreeNode root, int k) {
help(root, k);
return res;
}
public void help(TreeNode root, int k) {
if (root == null) {
return;
}
help(root.left, k);
count++;
if (count == k) {
res = root.val;
return;
}
help(root.right, k);
}
}