当前位置: 首页 > news >正文

面试算法55:二叉搜索树迭代器

题目

请实现二叉搜索树的迭代器BSTIterator,它主要有如下3个函数。

  • 构造函数:输入二叉搜索树的根节点初始化该迭代器。
  • 函数next:返回二叉搜索树中下一个最小的节点的值。
  • 函数hasNext:返回二叉搜索树是否还有下一个节点。

分析

如果对二叉树的中序遍历的迭代代码足够熟悉,我们就会注意到中序遍历的迭代代码中有一个while循环,循环的条件为true时循环体每执行一次就遍历二叉树的一个节点。当while循环的条件为false时,二叉树中的所有节点都已遍历完。因此,中序遍历的迭代代码中的while循环可以看成迭代器hasNext的判断条件,而while循环体内执行的操作就是函数next执行的操作。

public class BSTIterator {TreeNode cur;Stack<TreeNode> stack;public BSTIterator(TreeNode root) {cur = root;stack = new Stack<>();}public boolean hasNext() {return cur != null || !stack.isEmpty();}public int next() {while (cur != null) {stack.push(cur);cur = cur.left;}cur = stack.pop();int val = cur.val;cur = cur.right;return val;}
}

相关文章:

面试算法55:二叉搜索树迭代器

题目 请实现二叉搜索树的迭代器BSTIterator&#xff0c;它主要有如下3个函数。 构造函数&#xff1a;输入二叉搜索树的根节点初始化该迭代器。函数next&#xff1a;返回二叉搜索树中下一个最小的节点的值。函数hasNext&#xff1a;返回二叉搜索树是否还有下一个节点。 分析 …...

Linux Crontab 定时任务

crond 服务 Linux 通过 crond 服务来支持 crontab。 查看 crond 服务是否已经安装 输入下面命令确认 crond 服务是否已安装。 systemctl list-unit-files | grep crond 如果为 enabled&#xff0c;表示服务正运行。 crontab 文件 crontab 要执行的定时任务都被保存在 /etc…...

HiveSQL高级进阶技巧

目录 1.删除2.更新&#xff1a;3.行转列&#xff1a;4.列转行&#xff1a;5.分析函数&#xff1a;6.多维分析7.数据倾斜groupby&#xff1a;join&#xff1a; 掌握下面的技巧&#xff0c;你的SQL水平将有一个质的提升&#xff01; 1.删除 正常hive删除操作基本都是覆盖原数据&…...

【Flutter】Flutter 动画深入解析(1):掌握 AnimationController 的使用

【Flutter】Flutter 动画深入解析(1):掌握 AnimationController 的使用 文章目录 一、前言二、AnimationController 简介三、AnimationController 的主要功能四、Ticker 提供者五、AnimationController 的生命周期六、与 AnimationController 一起使用的 Future七、实际业务…...

安装富文本组件

安装vue-ueditor-wrap3.x&#xff1a; vue-ueditor-wrap3.x&#xff1a;一个“包装”了 UEditor 的 Vue 组件&#xff0c;支持通过 v-model 来绑定富文本编辑器的内容&#xff0c;让 UEditor 的使用简单到像 Input 框一样。省去了初始化 UEditor、手动调用 getContent&#xff…...

Tomcat下载地址(详细)

Apache Tomcat - Apache Tomcat 8 Software Downloadshttps://tomcat.apache.org/download-80.cgi2.找到Archives 3.选择下载的把版本 4.选择具体下载那个版本 5. 6.一般选择tar.gz结尾的压缩包...

领星ERP如何无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统

领星ERP&#xff08;LINGXING&#xff09;是一款专业的一站式亚马逊管理系统&#xff0c;帮助卖家构建完整的数据化运营闭环。&#xff0c;致力于为跨境电商卖家提供精细化运营和业财一体化的解决方案。 官网&#xff1a;https://erp.lingxing.com 集简云无代码集成平台&…...

Django实战项目-学习任务系统-自定义URL拦截器

接着上期代码框架&#xff0c;6个主要功能基本实现&#xff0c;剩下的就是细节点的完善优化了。 首先增加URL拦截器&#xff0c;你不会希望没有登录用户就可以进入用户主页各种功能的&#xff0c;所以增加URL拦截器可以解决这个问题。 Django框架本身也有URL拦截器&#xff0…...

[已解决]该主机与 Cloudera Manager Server 失去联系的时间过长。 该主机未与 Host Monitor 建立联系。

问题 调整hvie 的参数后导致该主机与 Cloudera Manager Server 失去联系的时间过长 思路 主机离家出走了&#xff01; 出现问题后立马参数修改回来&#xff1b; 但是还是发现有这样的报错&#xff1a; 网上百度&#xff0c;各种操作&#xff0c;大概总结为2点&#xff1a…...

通过在Z平面放置零极点的来设计数字滤波器

文章来源地址&#xff1a;https://www.yii666.com/blog/393376.html 通过在Z平面放置零极点的来设计数字滤波器 要求&#xff1a;设计一款高通滤波器&#xff0c;用在音频信号处理过程中&#xff0c;滤掉100Hz以下的信号。 实现方法&#xff1a;通过在Z平面放置零极点的来设…...

linux环境docker部署nginx对生产日志按日切割并压缩处理

linux环境docker部署nginx对生产日志按日切割并压缩处理 1、脚本文件 # 创建脚本文件 mkdir log_slice_task.sh # 编辑脚本文件 vim log_slice_task.sh#! /bin/bash # 定时切割日志脚本 LOG_ACCESS_FILE"/日志文件路径/access.log" LOG_FAIL_FILE"/日志文件路…...

【Spring Boot】发送邮件功能

发送邮件功能 一.pom.xml文件添加邮件依赖二.发送邮件信息&#xff08;1&#xff09;固定配置在application.yml&#xff08;2&#xff09;发送邮箱配成活&#xff08;3&#xff09;底层发送邮件方法&#xff08;4&#xff09;QQ邮箱开通smtp服务&#xff08;5&#xff09;网易…...

ELK问题整理

ELK问题整理 1、logstash启动报错 $ journalctl -xe | grep logstash Sep 13 16:37:23 am02 logstash[298460]: could not find java; set JAVA_HOME or ensure java is in PATH Sep 13 16:37:23 am02 systemd[1]: logstash.service: main process exited, codeexited, sta…...

《黑客帝国:破解编程密码》——探索编程世界的奥秘

文章目录 前言黑客帝国代码雨UbuntuLinux世界的奥秘如何在Ubuntu中查看系统信息科普推荐书籍后记 前言 在电影《黑客帝国》问世后&#xff0c;它不仅带来了震撼视觉体验&#xff0c;更在技术和编程领域产生了深远的影响。这部电影&#xff0c;让人们对计算机和编程的认识进一步…...

【优选算法系列】【专题六模拟】第一节.1576. 替换所有的问号和495. 提莫攻击

文章目录 前言一、替换所有的问号 1.1 题目描述 1.2 题目解析 1.2.1 算法原理 1.2.2 代码编写二、提莫攻击 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写总结 前言 一、替换所有的问号 1.1…...

路由器基础(十二):IPSEC VPN配置

一、IPSec VPN基本知识 完整的IPSec协议由加密、摘要、对称密钥交换、安全协议四个部分组成。 两台路由器要建立IPSecVPN连接&#xff0c;就需要保证各自采用加密、摘要、对称密钥 交换、安全协议的参数一致。但是IPSec协议并没有确保这些参数一致的手段。 同时&#xff0c;IP…...

Python 获取cpu、内存利用率

获取cpu、内存利用率 # -*- coding: latin1 -*- import psutil cpuPercent 0 psutil.cpu_percent() while True:vm psutil.virtual_memory()memoryPercent vm.percentcpuPercent psutil.cpu_percent(1) *10print("cpuPercent:"str(cpuPercent)" %")prin…...

Apache ECharts简介和相关操作

文章目录 一、Apache ECharts介绍二、快速入门1.下载echarts.js文件2.新建index.html文件3.准备一个DOM容器用于显示图表4.完整代码展示5.相关配置 三、演示效果四、总结 一、Apache ECharts介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观…...

怎么看待工信部牵头推动人形机器人发展

1&#xff0c;工信部牵头&#xff0c;而不是科技部牵头&#xff0c;有些蹊跷&#xff0c;科技部应该比工信部更了解科技发展趋势&#xff0c;工信部比科技部更了解工业发展趋势&#xff0c;这是用工业倒逼科技进步。 2&#xff0c;人的优势不是身体&#xff0c;而是精神&#…...

Hikari源码分析

总结 连接池关系 1、HikariDataSource构建函数->生成HikariPool对象->调用HikariPool的getConection得到连接 2、HikariPool包含ConcurrentBag 3、ConcurrentBag保存连接&#xff1a;三个集合threadList、sharedList、handoffQueue 4、ConcurrentBag管理连接&#xff1…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...