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

拼多多app官方下载汕头百度seo找谁

拼多多app官方下载,汕头百度seo找谁,综合型网站建设,游学做的好的网站文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 173. 二叉搜索树迭代器 一、题目描述 实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: 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 操作

三、解题思路

  1. 基本思路:
      初看题目,无非递归和栈两种做法。再看进阶时, O ( h ) \Omicron(h) O(h) 的空间复杂度实现 O ( 1 ) \Omicron(1) O(1) 的 next ,想了半天,没有想出来是怎么实现的,最后就用栈实现,然后去看官方题解是怎么实现的,结果也是用栈,看了复杂度分析,好家伙,搁着搞平均是吧!
    官方题解截图:
    在这里插入图片描述
  2. 具体思路:
    • 创建一个栈,初始化依次把根节点到最左节点压入栈;
    • 每次调用 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:vector<TreeNode*> 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.yayakq.cn/news/223016/

相关文章:

  • 网站都去哪里找可以免费注册网站
  • 西乡做网站费用flash个人网站动画
  • 吐鲁番好网站建设设计企业营销咨询
  • 免费做电脑网站p2p网站开发
  • 电子商务网站建设与维护读书心得dw怎么做网站
  • 网页设计尺寸大小规范seo教程网站优化
  • 网站建设情况登记表ip对网站作用
  • 企业网站建设立项报告网址站点出现异常怎么办
  • 房产中介网站排名html教程菜鸟教程语法
  • 珠海做网站费用郑州营销策划公司排行榜
  • 电子商务建立网站前期准备wordpress 插件 安装
  • 100m做电影网站成功的软文营销案例
  • 网站设计汕头安徽省城乡建设网站
  • 怎么查看网站的域名落寞文学网单本多本小说wordpress主题
  • 网站建设费钱吗想自己做一个网站
  • 青岛网站制作定制网站开发答辩记录表
  • 网站制作的一般步骤wordpress 自动水印
  • 网站建设创意广告词国外网站建设视频教学
  • 网站建设制作设计营销公司杭州苏州做i网站的
  • 企业网站建设豪禾网络广西网站建设开发
  • 徐州网站开发兼职做网站卖设备找哪家好
  • 外贸机械网站服务器维护中什么意思
  • 网站备案归营销型网站建设技术指标
  • 做教育招生网站成都网站关键词推广
  • 做创意小视频的网站浙江天奥建设集团网站
  • 顺义建设网站wordpress网站管理
  • 电商需要投资吗聊城关键词优化推广
  • 马鞍山市 网站建设wordpress试玩app
  • 大型网站开发织梦网站怎么修改内容
  • 义乌网站建设电话title 镇江网站建设