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

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

注意: next() 和hasNext() 操作的时间复杂度是O(1),并使用 O(h) 内存,其中 是树的高度。

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class BSTIterator {
public:
    BSTIterator(TreeNode *root) {
        while (root) {
            s.push(root);
            root = root->left;
        }
    }

/** @return whether we have a next smallest number */
    bool hasNext() {
        return !s.empty();
    }

/** @return the next smallest number */
    int next() {
        TreeNode *n = s.top();
        s.pop();
        int res = n->val;
        if (n->right) {
            n = n->right;
            while (n) {
                s.push(n);
                n = n->left;
            }
        }
        return res;
    }
private:
    stack<TreeNode*> s;
};

/**
 * Your BSTIterator will be called like this:
 * BSTIterator i = BSTIterator(root);
 * while (i.hasNext()) cout << i.next();
 */

173.二叉搜索树迭代器相关推荐

  1. Java实现 LeetCode 173 二叉搜索树迭代器

    173. 二叉搜索树迭代器 实现一个二叉搜索树迭代器.你将使用二叉搜索树的根节点初始化迭代器. 调用 next() 将返回二叉搜索树中的下一个最小的数. 示例: BSTIterator iterato ...

  2. 173. 二叉搜索树迭代器/94. 二叉树的中序遍历/145. 二叉树的后序遍历/98. 验证二叉搜索树

    2020-05-12 1.题目描述 二叉搜索树迭代器 2.题解 对于二叉搜索树而言,进行中序遍历就可以得到其有序序列,我们可以先对树进行遍历,将结果保存在 vector中,然后进行计算即可. 3.代码 ...

  3. 173. 二叉搜索树迭代器(二叉搜索树+栈)

    实现一个二叉搜索树迭代器.你将使用二叉搜索树的根节点初始化迭代器. 调用 next() 将返回二叉搜索树中的下一个最小的数. 示例: BSTIterator iterator = new BSTIte ...

  4. leetcode 173. 二叉搜索树迭代器

    实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象 ...

  5. LeetCode 173. 二叉搜索树迭代器(中序遍历)

    文章目录 1. 题目信息 2. 二叉树中序遍历 1. 题目信息 实现一个二叉搜索树迭代器.你将使用二叉搜索树的根节点初始化迭代器. 调用 next() 将返回二叉搜索树中的下一个最小的数. 示例: B ...

  6. Leetcode 173. 二叉搜索树迭代器 解题思路及C++实现

    解题思路: 使用中序遍历,将二叉搜索树的所有节点值依次push进队列中.每调用依次next函数,即返回队首元素,并pop.hasNext函数只需判断队列是否为空即可. /*** Definition ...

  7. LeetCode 653. 两数之和 IV - 输入 BST(二叉搜索树迭代器双指针)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true. 案例 1: 输入: 5/ \3 6/ \ ...

  8. 剑指 Offer II 055. 二叉搜索树迭代器

    链接:剑指 Offer II 055. 二叉搜索树迭代器 题解: /*** Definition for a binary tree node.* struct TreeNode {* int val ...

  9. LeetCode 1586. 二叉搜索树迭代器 II(数组+栈)

    文章目录 1. 题目 2. 解题 1. 题目 实现二叉搜索树(BST)的中序遍历迭代器 BSTIterator 类: BSTIterator(TreeNode root) 初始化 BSTIterato ...

  10. leetcode算法题--二叉搜索树迭代器

    题目链接:https://leetcode-cn.com/problems/binary-search-tree-iterator/ 1.排序 将树元素保存到数组中,再对其排序. class BSTI ...

最新文章

  1. 直播 | Python Web开发者的破局之道
  2. 【科普】国内外高质量数据科学竞赛平台有哪些?
  3. 10 大流行软件测试工具
  4. AT1981-[AGC001C]Shorten Diameter
  5. java 左右两边数据类型不一样_java基础语法
  6. HOOK使用:全局键盘钩子
  7. 如何用cool edit剪辑拼接音频文件
  8. UWP开发:APP之间的数据交互(以微信为例)
  9. android 前摄屏幕补光,移动终端的前置摄像头的补光方法及装置与流程
  10. matlab的颜色映射colormap
  11. 轻风送暖写诗意,梅雨传情送祝福
  12. 猿来你也在这里,北京上海无聊猿线下见面会成功举办
  13. 树莓派访问 群晖 里的共享文件夹
  14. 智能家居 打造一间乐享智能生活的“聪明屋”
  15. android 7种网络连接方式--IT蓝豹
  16. NodeJs - for循环的几种遍历方式
  17. layer遮罩层 简单的遮罩层
  18. 老杜 mySql自学笔记34道例题
  19. 2015 SCI期刊影响因子出炉
  20. 成功的创业者靠什么做重大决策

热门文章

  1. C# 使用 NPOI操作excle文件(读取与新建重写)
  2. (Windows)Scala学习3--列表、数组
  3. Linux入门——文本处理三剑客之gnu awk
  4. 浏览器加载、渲染过程总结
  5. 侧滑面板(对viewGroup的自定义)
  6. kafka入门:简介、使用场景、设计原理
  7. CSS:重量和级联规则,确定其优先级
  8. static在实例Extends、Overload中理解
  9. Windows Phone 7 手机使用小记
  10. python必须要记住的代码_好用到哭!请记住这20段Python代码