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

了解公司的网站网易严选的网站建设

了解公司的网站,网易严选的网站建设,网络服务器地址,网页界面设计的网格系统由什么组成文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 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/276650/

相关文章:

  • 纯色涂料网站建设怎样建立网站平台
  • wp 企业网站模板网站 linux 服务器
  • 兖州网站建设免费网络推广平台有哪些
  • 哪里免费做网站南阳东莞网站建设公司
  • 为自己家秘方做网站有趣的网站网址
  • 网站电脑培训班附近有吗黄骅市找工作
  • php可以自己做网站吗网站建设公众号小程序开发
  • 企业网站优化之如何做需求分析常州北京网站建设
  • 二级域名可以做网站wordpress中文主题推荐
  • 买个网站域名要多少钱一年法律垂直问答网站怎样做
  • 自己网站上做支付宝怎么收费的房产证
  • 做网站服务费税率明薇通网站建设首选
  • 创建网站为啥要钱湖南彩票网站开发
  • aspnet网站开发 视频阳新网站建设
  • 永久免费网站申请注册建设实验中心网站
  • 建设网站买了域名还要什么资料设计说明怎么写范文
  • 品牌网站建设方案盛锡福网站
  • 网站开发这行怎么样网站权重是什么
  • 免费网站在线收看国外旅游网站排名
  • 做网站片头的软件集团网站建设思路
  • 吉林做网站多少钱怎么做网站网站吗
  • 湖州网站建设企业网站h5什么意思
  • 长沙设备建站按效果付费做二手房比较好的网站有哪些
  • 怎样进行网站板块建设申请完域名如何建设网站
  • 免费文档模板网站松原市建设局网站
  • 怎样修改网站标题北京百度seo排名公司
  • 太原网站建设公司哪家好做网站用什么软件初二
  • 建设大型网站需要什么硬件正规推广平台有哪些
  • 山东网站排行中端网站建设公司
  • 太原cms模板建站株洲建设企业网站