LeetCode - Binary Search Tree Iterator

来源:互联网 发布:消音伴奏制作软件 编辑:程序博客网 时间:2024/06/01 10:17

Binary Search Tree Iterator

 Total Accepted: 20470 Total Submissions: 69577My Submissions

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;};


0 0
原创粉丝点击