zoukankan      html  css  js  c++  java
  • Leetcode173. 二叉搜索树迭代器

    空间复杂度O(h)而不是O(n),因此不能直接在初始化函数中做中序遍历将结果存储到数组中。
    next()和hasNext()时间复杂度为O(1)
    首先本题很容易想到用二叉树的中序遍历去解决,外加注意点1.我们得到思路:仅仅将中序遍历最小值之前的节点压入栈中,当next时我们将栈顶元素取出即为最小值返回,当然在此之前需要将下一个最小值找到,并将路径上的所有节点压入栈中以供使用,查看是否迭代到头只需判断栈是否为空即可,如下:

    class BSTIterator {
    private:
          stack<TreeNode*>ss;    
    public:
    
        BSTIterator(TreeNode* root) {
          
            while(root)
            {
                while (root)
                {
                    ss.push(root);
                    root=root->left;
                }
            }
        }
        
        /** @return the next smallest number */
        int next() {
             TreeNode* cur=ss.top();
             int num=cur->val;
             ss.pop();
             cur=cur->right;  
            while (cur)
            {
                ss.push(cur);
                cur=cur->left;
            }
             return num;
        }
        
        /** @return whether we have a next smallest number */
        bool hasNext() {
            return !ss.empty();
            
        }
    };
  • 相关阅读:
    NFS服务
    rsync
    jquery animate
    一个简单的widget
    EXTJS学习(一)
    jquery+linq制作博客(二)
    EXTJS学习(二)Message
    Jquery ui widget中的_create(),_init(),destroy()
    Jquery ui widget开发
    Json.net简单用法
  • 原文地址:https://www.cnblogs.com/renzmin/p/11997284.html
Copyright © 2011-2022 走看看