[LeetCode] 173. Binary Search Tree Iterator

来源:互联网 发布:王欣认罪 知乎 编辑:程序博客网 时间:2024/06/11 15:23

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. 


class BSTIterator {public:    BSTIterator(TreeNode *root) {        BSTIteratorHelper(root);        it = vec.begin();    }    /** @return whether we have a next smallest number */    bool hasNext() {        return it != vec.end();    }    /** @return the next smallest number */    int next() {        return *it++;    }private:    void BSTIteratorHelper(TreeNode *root) {        if (root == nullptr) return;        BSTIteratorHelper(root->left);        vec.push_back(root->val);        BSTIteratorHelper(root->right);    }    vector<int> vec;    vector<int>::iterator it;};
原创粉丝点击