美文网首页
Leetcode173. 二叉搜索树迭代器

Leetcode173. 二叉搜索树迭代器

作者: LonnieQ | 来源:发表于2019-11-10 10:42 被阅读0次

    题目

    C++解法

    实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。


    bst-tree.png

    调用 next() 将返回二叉搜索树中的下一个最小的数。
    示例:

    BSTIterator iterator = new BSTIterator(root);
    iterator.next();    // 返回 3
    iterator.next();    // 返回 7
    iterator.hasNext(); // 返回 true
    iterator.next();    // 返回 9
    iterator.hasNext(); // 返回 true
    iterator.next();    // 返回 15
    iterator.hasNext(); // 返回 true
    iterator.next();    // 返回 20
    iterator.hasNext(); // 返回 false
    

    提示:

    next() 和 hasNext() 操作的时间复杂度是 O(1),并使用 O(h) 内存,其中 h 是树的高度。
    你可以假设 next() 调用总是有效的,也就是说,当调用 next() 时,BST 中至少存在一个下一个最小的数。
    

    C++解法

    class BSTIterator {
    public:
        vector<int> vec;
        int index = 0;
        BSTIterator(TreeNode* root) {
            inorder(root);
        }
        
        void inorder(TreeNode* root) {
            if (root) {
                inorder(root->left);
                vec.push_back(root->val);
                inorder(root->right);
            }
        }
        
        /** @return the next smallest number */
        int next() {
            return vec[index++];
        }
        
        /** @return whether we have a next smallest number */
        bool hasNext() {
            return index < vec.size();
        }
    };
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/binary-search-tree-iterator
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:Leetcode173. 二叉搜索树迭代器

          本文链接:https://www.haomeiwen.com/subject/mjnobctx.html