Leetcode173. 二叉搜索树迭代器
2024-10-18 23:12:57
空间复杂度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(); }
};
最新文章
- angularjs $scope.$watch(),监听值得变化
- Intelij IDEA 2016.3安装mybatis插件并激活教程
- in_array支持第三个参数,强制对数据类型检测
- c#.net常用字符串函数 字符串常用方法
- asp.net导出word(word2007)
- 虚拟机评估——如何确定一个CPU核上部署的虚拟机数量?
- 转:python webdriver API 之浏览器的操作
- eclipse注解——作者,创建时间,版本
- Java中调用参数是数组的存储过程
- [Angular 2] Child Router
- pager-taglib 使用说明2
- .NET反编译之Reflector基础示例
- Java线程:线程安全类和Callable与Future(有返回值的线程)
- Logistic回归(逻辑回归)和softmax回归
- ubuntu16.04安装中文输入法
- PB测款方法 店铺运费模板 设置
- Python 基础数据类型之set
- 直压到亚马逊AWS平台,阿里云OSS平台或者腾讯云COS平台
- python基础知识梳理----2格式化输出,替换符
- webqq协议分析之~~~~验证是否需要验证码
热门文章
- LeetCode 1255 得分最高的单词集合 Maximum Score Words Formed by Letters
- Python常用模块实战之ATM和购物车系统再升级
- Linux-Bash终端快捷键
- IT兄弟连 HTML5教程 了解HTML5的主流应用1
- 纯手打AJAX,还有一个对象转查询字符串的小方法obj=>;url
- github上星星1万多的python教程推荐收藏
- 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.
- java基础(12):构造方法、this、super
- GitHub 2019年年度报告:Python最受欢迎,VScode贡献者高达19.1K
- 易优CMS:【小白学标签】之empty的基础用法