二叉搜索树迭代器

173. 二叉搜索树迭代器
分别结合 队列 两种数据结构实现。


class BSTIterator:"""结合栈173. 二叉搜索树迭代器https://leetcode.cn/problems/binary-search-tree-iterator/description/?show=1"""def __init__(self, root: Optional[TreeNode]):self.stk = []self.pushleftBranch(root)# 左侧树枝一撸到底def pushleftBranch(self, p):while p:self.stk.append(p)p = p.leftdef next(self) -> int:p = self.stk.pop()self.pushleftBranch(p.right)return p.valdef hasNext(self) -> bool:return len(self.stk) > 0def peek(self) -> bool:return self.stk[-1].valclass BSTIterator1:"""结合队列173. 二叉搜索树迭代器https://leetcode.cn/problems/binary-search-tree-iterator/description/?show=1"""def __init__(self, root: Optional[TreeNode]):self.deque = collections.deque()self.inOrder(root)def inOrder(self, root):"""二叉树中序遍历:param root::return:"""if not root:returnself.inOrder(root.left)self.deque.append(root.value)self.inOrder(root.right)def next(self) -> int:val = self.deque.popleft()return valdef hasNext(self) -> bool:return len(self.deque) > 0def peek(self) -> bool:return self.deque[0]

BST迭代器应用

1305. 两棵二叉搜索树中的所有元素

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:"""1305. 两棵二叉搜索树中的所有元素"""def getAllElements(self, root1: TreeNode, root2: TreeNode) -> List[int]:t1 = BSTIterator(root1)t2 = BSTIterator(root2)res = []while t1.hasNext() and t2.hasNext():if t1.peek() > t2.peek():res.append(t2.next())else:res.append(t1.next())while t1.hasNext():res.append(t1.next())while t2.hasNext():res.append(t2.next())return resclass BSTIterator:"""结合队列173. 二叉搜索树迭代器https://leetcode.cn/problems/binary-search-tree-iterator/description/?show=1"""def __init__(self, root: Optional[TreeNode]):self.deque = collections.deque()self.inOrder(root)def inOrder(self, root):"""二叉树中序遍历:param root::return:"""if not root:returnself.inOrder(root.left)self.deque.append(root.val)self.inOrder(root.right)def next(self) -> int:val = self.deque.popleft()return valdef hasNext(self) -> bool:return len(self.deque) > 0def peek(self) -> bool:return self.deque[0]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十五.镜头知识之景深(Depth of Field)

十五.镜头知识之景深(Depth of Field) 文章目录 十五.镜头知识之景深(Depth of Field)15.1 概述15.2 景深(depth of field)定义15.3 景深原理15.3.1 弥散圆(circle of confusion) 15.4 景深总结 15.1 概述 先看两个例子,拍摄花、昆虫等照片时,背景拍的比…

【C++】vector的介绍 | 常见接口的使用

目录 vector的介绍 常见接口 构造函数 尾插push_back() vector的遍历 1.用方括号下标 遍历: 2.调用at()来访问: 3.用迭代器遍历: 4.范围for遍历: vector空间 vector增删查改 覆盖assign() 查找find() 插入insert() …

【加载数据--自定义自己的Dataset类】

【加载数据自定义自己的Dataset类】 1 加载数据2 数据转换3 自定义Dataset类4 划分训练集和测试集5 提取一批次数据并绘制样例图 假设有四种天气图片数据全部存放与一个文件夹中,如下图所示: ├─dataset2 │ cloudy1.jpg │ cloudy10.jpg │ …

物联网、工业大数据平台 TDengine 与苍穹地理信息平台完成兼容互认证

当前,在政府、军事、城市规划、自然资源管理等领域,企业对地理信息的需求迅速增加,人们需要更有效地管理和分析地理数据,以进行决策和规划。在此背景下,“GIS 基础平台”应运而生,它通常指的是一个地理信息…

FL Studio21.1电脑试用体验版音乐制作软件

我一直以来对音乐艺术都很感兴趣。最近我接触到了一款名为 FL Studio 的电脑版音乐制作软件,深感其强大功能和广泛适用性。通过使用这款软件,我不仅深入了解了音乐制作的过程与技巧,也加深了对音乐创作的理解。 FL Studio 最初是一款针对 MI…

四川玖璨电子商务有限公司抖音培训引领电商新潮

近年来,随着电子商务的迅猛发展,抖音这个社交媒体平台也逐渐成为了商家必争之地。四川玖璨电子商务有限公司抖音培训,为你解锁电商流量密码,助你一飞冲天! 一、抖音电商:下一个电商蓝海 作为拥有海量用户的…

爬虫抓取数据时显示超时,是爬虫IP质量问题?

当我们进行网络爬虫开发时,有时会遇到抓取数据时出现超时的情况。这可能是由于目标网站对频繁请求做了限制,或者是由于网络环境不稳定造成的。其中,爬虫IP的质量也是导致超时的一个重要因素。本文将探讨抓取数据时出现超时的原因,…

前端开发 vs. 后端开发:编程之路的选择

文章目录 前端开发:用户界面的创造者1. HTML/CSS/JavaScript:2. 用户体验设计:3. 响应式设计:4. 前端框架: 后端开发:数据和逻辑的构建者1. 服务器端编程:2. 数据库:3. 安全性&#…

删除有序数组里的重复项 -力扣(Java)

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k ,你…

深度学习入门教学——对抗攻击和防御

目录 一、对抗样本 二、对抗攻击 三、对抗防御 一、对抗样本 对抗样本是指对机器学习模型的输入做微小的故意扰动,导致模型输出结果出现错误的样本。深度神经网络在经过大量数据训练后,可以实现非常复杂的功能。在语音识别、图像识别、自然语言处理等任务上被广…

整型提升——(巩固提高——字符截取oneNote笔记详解)

文章目录 前言一、整型提升是什么?二、详细图解1.图解展示 总结 前言 提示:这里可以添加本文要记录的大概内容: 整型提升是数据存储的重要题型,也是计算机组成原理的核心知识点。学习c语言进阶的时候,了解内存中数据怎么存&#…

求和——快速幂

# 求和 ## 题目描述 求 1^b2^b…… a^b 的和除以 10^4 的余数。 ## 输入格式 第一行一个整数 N,表示共有 N 组测试数据。 对于每组数据,一行两个整数 a,b。 ## 输出格式 对于每组数据,一行一个整数,表示答案。 ### 样例输入 …

APS手动编译,CLion测试

一、简介 APSI——Asymmetric PSI: 私用集交集(PSI)是指这样一种功能,即双方都持有一组私用项,可以在不向对方透露任何其他信息的情况下检查他们有哪些共同项。集合大小的上限被假定为公共信息,不受保护。 …

QtCreator报大量未知标识符错误的解决方法

目录 前言背景介绍问题1问题1解决方法问题2问题2 解决方法总结 前言 本文记录了在使用QtCreator开发时遇到的一个错误,导致编译时出现大量的“未知标识符”,经过一番努力最终解决了这个问题,特在此记录。 背景介绍 Qt项目在麒麟V10 系统下…

【DTEmpower案例操作教程】向导式建模

DTEmpower是由天洑软件自主研发的一款通用的智能数据建模软件,致力于帮助工程师及工科专业学生,利用工业领域中的仿真、试验、测量等各类数据进行挖掘分析,建立高质量的数据模型,实现快速设计评估、实时仿真预测、系统参数预警、设…

X509证书结构

使用ASN.1语言描述,我们可以将X509Certificate抽象为以下结构: Certificate :: SEQUENCE {tbsCertificate TBSCertificate,signatureAlgorithm AlgorithmIdentifier,signature BIT STRING }即基本证书域、签名算法、签名值。 其…

手机上记录的备忘录内容怎么分享到电脑上查看?

手机已经成为了我们生活中不可或缺的一部分,我们用它来处理琐碎事务,记录生活点滴,手机备忘录就是我们常用的工具之一。但随着工作的需要,我们往往会遇到一个问题:手机上记录的备忘录内容,如何方便地分享到…

设计模式——3. 抽象工厂模式

1. 说明 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建一组相关或依赖对象的方式,而无需指定它们的具体类。抽象工厂模式是工厂模式的扩展,它关注于创建一组相关的对象家族,而不仅仅是一个单一的对象。 抽象工厂模式通常涉及以下几个角…

微信小游戏从零到上线系列文章整理,建议收藏

引言 本系列是《从零开始开发贪吃蛇小游戏到上线系列》,欢迎大家关注分享收藏订阅。 大家中秋快乐,我是亿元程序员,一位有着8年游戏行业经验的主程。前面笔者给大家讲解了微信小游戏如何从零到上线的流程。可能很多小伙伴都还没有看到。 本…

【Oracle】Oracle系列之十一--PL/SQL

文章目录 往期回顾前言1. PL/SQL语句块组成2. 变量的声明与使用(1)变量声明(2)变量赋值 3. 控制语句(1)分支语句(2)循环语句 4. 异常处理(1)系统异常&#xf…