题目链接: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)
{
stack<TreeNode*> _stack;
int i=0;
TreeNode* p=root;
while(p!=NULL||!_stack.empty())
{
while(p!=NULL)
{
_stack.push(p);
p=p->left;
}
if(!_stack.empty())
{
p=_stack.top();
_stack.pop();
i++;
if(i==k)
return p->val;
p=p->right;
}
}
return p->val;
}
};