leetcode 每日一题 2021/10/17 230. 二叉搜索树中第K小的元素
难度:中等
题目:
给定一个二叉搜索树的根节点 root ,和一个整数 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
分析:
二叉搜索树:每一个节点左边的子树上都是小于该节点的值,右边的子树上都是大于该节点的值。
所以,我们只需要中序遍历得到的第k个数就行。中序遍历得到的一定是升序序列。
代码:
```cpp
class Solution {
public:
int count=0;
int value = 0;
int total = 0;
void recursion(TreeNode* root){//中序遍历
if(!root){//如果该节点为null终止搜索
return ;
}
recursion(root->left);//向左搜索
count++;
if(count==total){
value = root->val;
return ;
}
recursion(root->right);//向右搜索
}
int kthSmallest(TreeNode* root, int k) {
total = k;
recursion(root);
return value;
}
};