Leetcode:Binary Search Tree Iterator

来源:互联网 发布:java多线程输出1到100 编辑:程序博客网 时间:2024/06/06 01:00

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 {    stack<TreeNode *> myStack;public:    BSTIterator(TreeNode *root) {        TreeNode *node=root;        while(node!=NULL)        {            myStack.push(node);            node = node->left;        }    }    /** @return whether we have a next smallest number */    bool hasNext() {        return !myStack.empty();    }    /** @return the next smallest number */    int next() {        TreeNode *tmpNode = myStack.top();        int res = tmpNode->val;         myStack.pop();                tmpNode=tmpNode->right;        while(tmpNode!=NULL)        {            myStack.push(tmpNode);            tmpNode = tmpNode->left;        }        return res;    }};


0 0