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

网站 管理山东诚祥建设集团公司网站

网站 管理,山东诚祥建设集团公司网站,邯郸市教育考试院,114查询文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 173. 二叉搜索树迭代器 一、题目描述 实现一个二叉搜索树迭代器类BSTIterator #xff0c;表示一个按中序遍历二叉搜索树#xff08;BST#xff09;的迭代器#xff1a; BSTIterato… 文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 173. 二叉搜索树迭代器 一、题目描述 实现一个二叉搜索树迭代器类BSTIterator 表示一个按中序遍历二叉搜索树BST的迭代器 BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字且该数字小于 BST 中的任何元素。 boolean hasNext() 如果向指针右侧遍历存在数字则返回 true 否则返回 false 。 int next()将指针向右移动然后返回指针处的数字。 注意指针初始化为一个不存在于 BST 中的数字所以对 next() 的首次调用将返回 BST 中的最小元素。 你可以假设 next() 调用总是有效的也就是说当调用 next() 时BST 的中序遍历中至少存在一个下一个数字。 进阶 你可以设计一个满足下述条件的解决方案吗next() 和 hasNext() 操作均摊时间复杂度为 O(1) 并使用 O(h) 内存。其中 h 是树的高度。 二、测试用例 示例 输入 [BSTIterator, next, next, hasNext, next, hasNext, next, hasNext, next, hasNext] [[[7, 3, 15, null, null, 9, 20]], [], [], [], [], [], [], [], [], []] 输出 [null, 3, 7, true, 9, true, 15, true, 20, false]解释 BSTIterator bSTIterator new BSTIterator([7, 3, 15, null, null, 9, 20]); bSTIterator.next(); // 返回 3 bSTIterator.next(); // 返回 7 bSTIterator.hasNext(); // 返回 True bSTIterator.next(); // 返回 9 bSTIterator.hasNext(); // 返回 True bSTIterator.next(); // 返回 15 bSTIterator.hasNext(); // 返回 True bSTIterator.next(); // 返回 20 bSTIterator.hasNext(); // 返回 False提示 树中节点的数目在范围 [1, 105] 内 0 Node.val 106 最多调用 105 次 hasNext 和 next 操作三、解题思路 基本思路   初看题目无非递归和栈两种做法。再看进阶时 O ( h ) \Omicron(h) O(h) 的空间复杂度实现 O ( 1 ) \Omicron(1) O(1) 的 next 想了半天没有想出来是怎么实现的最后就用栈实现然后去看官方题解是怎么实现的结果也是用栈看了复杂度分析好家伙搁着搞平均是吧 官方题解截图 具体思路 创建一个栈初始化依次把根节点到最左节点压入栈每次调用 next 则出栈一个元素并依次将该元素右子树根到其最左节点压入栈调用 hasNext 就返回栈的大小 四、参考代码 时间复杂度 O ( n ) \Omicron(n) O(n) 空间复杂度 O ( h ) \Omicron(h) O(h) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),* right(right) {}* };*/ class BSTIterator { public:vectorTreeNode* s;BSTIterator(TreeNode* root) {for (TreeNode* p root; p; p p-left)s.emplace_back(p);}int next() {TreeNode* t s.back();s.pop_back();for (TreeNode* p t-right; p; p p-left)s.emplace_back(p);return t-val;}bool hasNext() { return s.size(); } };/*** Your BSTIterator object will be instantiated and called as such:* BSTIterator* obj new BSTIterator(root);* int param_1 obj-next();* bool param_2 obj-hasNext();*/
http://www.dnsts.com.cn/news/184882.html

相关文章:

  • dw软件做二级连接网站上海网站推广软件
  • 网站从建设到运行要多少微网站是免费的吗
  • 长春网站建设哪家好上海企业网站制作服务
  • 南山做网站价格七个2wordpress
  • 优舟网站建设站长之家的作用
  • 嘉兴企业网站开发校园网站界面建设
  • 常用的营销策略网络优化推广 网站开发建设
  • 响应式 购物网站模板广州小程序设计
  • 学生心理健康网站建设论文wordpress 内链设置
  • 网站会员注册系统源码西安公司注销
  • 江门网站建设哪家快wordpress single page
  • 延安网站建设网站建设适合手机
  • 网站建设攻略wordpress函数大全
  • 曲靖网站开发购物网站推广
  • 网站项目开发流程及规范网站放到国外空间
  • 网站建设制作需求建设信用卡中心网站
  • 网站设计站wordpress注册不要电子邮件
  • 宁波小型建网站公司做优惠券网站赚钱吗
  • 假视频网站源码出售视频推广平台有哪些
  • 哪些网站上可以做seo推广的班级网站怎么做ppt模板
  • 怎么做购物型网站野花视频直播免费观看7
  • 产品展示网站系统教育培训网站源码 模板 php培训机构网站源码培训学校网站源码
  • 公司网站建设申请报告公司网站建设多少费用济南兴田德润评价
  • 嘉定广州网站建设深圳百度推广关键词推广
  • 公司网站的维护学动漫设计好找工作吗?
  • 做网站要切图吗网站开发费用摊销年限
  • 中国建行官方网站网站升级应注意的问题
  • 求做网站h5转wordpress
  • 怎么用电脑做网站服务器旅行网站排名
  • 如何做网站的内容经典编辑器wordpress