原题链接https://leetcode.com/problems/kth-smallest-element-in-a-bst/
Given a binary search tree, write a function kthSmallest
to find the kth smallest element in it.
Note:
You may assume k is always valid, 1 ≤ k ≤ BST's total elements.
Follow up:
What if the BST is modified (insert/delete operations) often and you need to find the kth smallest frequently? How would you optimize the kthSmallest routine?
二叉搜索树的中序输出就是从小到大的情况。
所以直接中序遍历即可
class Solution {
public:
int kthSmallest(TreeNode* root, int k)
{
midsort(root, k);
return ans;
}
void midsort(TreeNode* root, int& k)
{
if (root == NULL)return;
midsort(root->left, k);
if (--k == 0){ ans = root->val; return; }
midsort(root->right, k);
}
private:
int ans;
};