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

网站建设凡科wordpress页面大小修改

网站建设凡科,wordpress页面大小修改,沈阳响应式网站制作,兰州市建设工程安全质量监督站网站文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 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/686110/

相关文章:

  • 做网站框架图哪个在线网站好用seo哪家强
  • 深圳建设交易中心网站做学校网站素材
  • 网站的外链是怎么做的网络营销典型案例
  • 网站开发平台建设手机建站cms
  • 可信赖的企业网站建设设计师网址导航官网
  • 网站建设要考虑哪些方面网站菜单 网站导航
  • 做一小说网站要花多钱京东seo是什么意思
  • 潮州南桥市场中国建设银行网站网络app推广公司
  • 营销网站html律师网站建设
  • 网站建设规划怎么写门户网站信息发布管理办法
  • 个人网站与企业网站区别怎么增加网站的流量
  • wordpress站点收录好未备案网站如何加cdn
  • 泰安网站建设如何全国文明城市创建标准
  • 做外贸网站用什么软件手机个人网页制作
  • 房地产门户网站网站备案由别人代
  • 深圳市龙岗区住房和建设局官网网站我要自学网ps视频教程免费下载
  • 网站收录怎么提高世界足球排名前100名
  • 网站策划案模板天津建设招标网站
  • 建设工程招标专业网站上海自助建站系统
  • 建立网站备案需要什么资料长春网站建设net
  • 自己做代练网站开发网站有什么用
  • 最新汽车网站大全建设网站培训学校
  • 徐州营销网站建设报价教育类网站配色
  • 网站问卷调查系统怎么做网页设计范文
  • 我的世界服务器如何做充钱网站百度站长平台账号
  • 网站优点缺点网站页面怎么设计
  • 浙江高速建设公司网站注册开发公司
  • 医疗网站建设资讯苏州相城做网站的
  • 做网站周记百度小程序开发平台
  • 一家做运动鞋的网站好昌平网站开发多少钱