Binary Search Tree Iterator Posted on 2018-09-08 Descriptionhttps://leetcode.com/problems/binary-search-tree-iterator/description/ Solution123456789101112131415161718192021222324252627282930313233343536373839404142434445464748/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class BSTIterator {public: BSTIterator(TreeNode *root) { this->nodeStack = new stack<TreeNode*>(); this->current = root; while(this->current != NULL) { this->nodeStack->push(this->current); this->current = this->current->left; } } /** @return whether we have a next smallest number */ bool hasNext() { return !this->nodeStack->empty(); } /** @return the next smallest number */ int next() { this->current = this->nodeStack->top(); this->nodeStack->pop(); int ret = this->current->val; this->current = this->current->right; while(this->current != NULL) { this->nodeStack->push(this->current); this->current = this->current->left; } return ret; }private: TreeNode* current; stack<TreeNode*>* nodeStack;};/** * Your BSTIterator will be called like this: * BSTIterator i = BSTIterator(root); * while (i.hasNext()) cout << i.next(); */