您的位置:首页 > 其它

LeetCode - Binary Search Tree Iterator

2015-07-14 13:41 288 查看


Binary Search Tree Iterator

 Total Accepted: 20470 Total
Submissions: 69577My Submissions

Question
 Solution 

Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.
Calling 
next()
 will return the
next smallest number in the BST.
Note: 
next()
 and 
hasNext()
 should
run in average O(1) time and uses O(h) memory, where h is the height of the tree.

s

class BSTIterator {
public:
BSTIterator(TreeNode *root) {
while(root){
stk.push(root);
root = root->left;
}
}

/** @return whether we have a next smallest number */
bool hasNext() {
return !stk.empty();
}

/** @return the next smallest number */
int next() {
TreeNode* now = stk.top();
int ret = now->val;
stk.pop();
if(now->right){
now = now->right;
while(now){
stk.push(now);
now = now->left;
}
}
return ret;
}
private:
stack<TreeNode*> stk;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息