空间复杂度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(); }
};

最新文章

  1. angularjs $scope.$watch(),监听值得变化
  2. Intelij IDEA 2016.3安装mybatis插件并激活教程
  3. in_array支持第三个参数,强制对数据类型检测
  4. c#.net常用字符串函数 字符串常用方法
  5. asp.net导出word(word2007)
  6. 虚拟机评估——如何确定一个CPU核上部署的虚拟机数量?
  7. 转:python webdriver API 之浏览器的操作
  8. eclipse注解——作者,创建时间,版本
  9. Java中调用参数是数组的存储过程
  10. [Angular 2] Child Router
  11. pager-taglib 使用说明2
  12. .NET反编译之Reflector基础示例
  13. Java线程:线程安全类和Callable与Future(有返回值的线程)
  14. Logistic回归(逻辑回归)和softmax回归
  15. ubuntu16.04安装中文输入法
  16. PB测款方法 店铺运费模板 设置
  17. Python 基础数据类型之set
  18. 直压到亚马逊AWS平台,阿里云OSS平台或者腾讯云COS平台
  19. python基础知识梳理----2格式化输出,替换符
  20. webqq协议分析之~~~~验证是否需要验证码

热门文章

  1. LeetCode 1255 得分最高的单词集合 Maximum Score Words Formed by Letters
  2. Python常用模块实战之ATM和购物车系统再升级
  3. Linux-Bash终端快捷键
  4. IT兄弟连 HTML5教程 了解HTML5的主流应用1
  5. 纯手打AJAX,还有一个对象转查询字符串的小方法obj=&gt;url
  6. github上星星1万多的python教程推荐收藏
  7. MySql配置主从模式 Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
  8. java基础(12):构造方法、this、super
  9. GitHub 2019年年度报告:Python最受欢迎,VScode贡献者高达19.1K
  10. 易优CMS:【小白学标签】之empty的基础用法