classBSTIterator{public:intpos;vector<TreeNode*>treeNodeStack;voidbuildStack(TreeNode*node){if(node==NULL){return;}else{if(NULL!=node->left){buildStack(node->left);}treeNodeStack.push_back(node);if(NULL!=node->right){buildStack(node->right);}}}BSTIterator(TreeNode*root){pos=0;treeNodeStack.clear();buildStack(root);}/** @return whether we have a next smallest number */boolhasNext(){returntreeNodeStack.size()>pos;}/** @return the next smallest number */intnext(){returntreeNodeStack[pos++]->val;}};