由于‘中序遍历一个二叉查找树(BST)的结果是一个有序数组’ ,因此我们只需要在遍历到第k个,返回当前元素即可。
class Solution {
public:
int kthSmallest(TreeNode* root, int k) {
vector<int> nums;
stack<TreeNode*> St;
TreeNode* temp=root;
while(temp || !St.empty()){
while(temp){
St.push(temp);
temp=temp->left;
}
if(!St.empty()){
temp=St.top();
St.pop();
nums.push_back(temp->val);
temp=temp->right;
}
}
return nums[k-1];
}
};