二叉搜索树中第 K 小的元素
题目链接:二叉搜索树中第 K 小的元素
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。
方法一:中序遍历
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int res;
int k;
void f(TreeNode* root) {
if (root == nullptr) return ;
f(root->left);
if (k == 0) return ;
if (--k == 0) res = root->val;
f(root->right);
}
int kthSmallest(TreeNode* root, int k) {
this->k = k;
f(root);
return res;
}
};