首页 > 其他分享 >2022-8-19 剑指offer-二叉树-递归

2022-8-19 剑指offer-二叉树-递归

时间:2022-08-19 10:57:35浏览次数:96  
标签:BSTIterator TreeNode val 19 next BST int 二叉树 2022

剑指 Offer II 055. 二叉搜索树迭代器

难度中等

实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器:

  • BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。
  • boolean hasNext() 如果向指针右侧遍历存在数字,则返回 true ;否则返回 false 。
  • int next()将指针向右移动,然后返回指针处的数字。

注意,指针初始化为一个不存在于 BST 中的数字,所以对 next() 的首次调用将返回 BST 中的最小元素。

可以假设 next() 调用总是有效的,也就是说,当调用 next() 时,BST 的中序遍历中至少存在一个下一个数字。

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode() {}
 8  *     TreeNode(int val) { this.val = val; }
 9  *     TreeNode(int val, TreeNode left, TreeNode right) {
10  *         this.val = val;
11  *         this.left = left;
12  *         this.right = right;
13  *     }
14  * }
15  */
16 class BSTIterator {
17     List<TreeNode> list;
18     int index=-1;
19     public BSTIterator(TreeNode root) {
20         list=new ArrayList<>();
21         inorder(root);
22     }
23     
24     public int next() {
25         return list.get(++index).val;
26     }
27     
28     public boolean hasNext() {
29         return index<list.size()-1;
30     }
31 
32     public void inorder(TreeNode root){
33         if (root==null) return;
34         inorder(root.left);
35         list.add(root);
36         inorder(root.right);
37     }
38 }
39 
40 /**
41  * Your BSTIterator object will be instantiated and called as such:
42  * BSTIterator obj = new BSTIterator(root);
43  * int param_1 = obj.next();
44  * boolean param_2 = obj.hasNext();
45  */

思路 :递归实现中序遍历,也可以用栈实现中序遍历。

标签:BSTIterator,TreeNode,val,19,next,BST,int,二叉树,2022
From: https://www.cnblogs.com/benbicao/p/16601252.html

相关文章

  • 2022-08-19 第二小组 张di
    JDBCStatement的不足1.大量的拼接,可读性低 2.sql注入Connectionconn=null;Statementstmt=null;ResultSetre=null;conn=GetCon......
  • 限时免费领取!网易数帆深度参编中国信通院《低代码发展白皮书(2022年)》
    【点击即可免费获取完整版《低代码发展白皮书(2022年)》】近日,由中国信息通信研究院(以下简称“中国信通院”)和中国通信标准化协会联合主办的“2022数字化转型发展高峰论坛”......
  • [一、基础语法]19流程控制:breake,continue,return循环控制语句的使用
    热烈欢迎,请直接点击!!!进入博主AppStore主页,下载使用各个作品!!!注:博主将坚持每月上线一个新app!!!......
  • 2022-08-18 第六小组 高佳誉 学习笔记
    MySQL常用函数聚合函数count:计数。count(*)≈count(1)>count(主键)count(*):MySQL对count(*)底层优化,count(0)。count(1)count(主键)count(字段)min:最小值max:最......
  • JAVA从头学习-2022年8月15日
    总概述1、JAVA是什么是一门高级编程语言2、JAVA是哪家公司研发的,现在属于哪家公司sun,oracle3、Java之父是谁詹姆斯.高斯林......
  • 1019 [USACO 2007 Nov S]Cow Hurdles floyd 最小化路径中的最高点。
     链接:https://ac.nowcoder.com/acm/contest/26077/1018来源:牛客网题目描述FarmerJohnisonaboatseekingfabledtreasureononeofthe......
  • NOI2022 游记
    NOI2022游寄还没开始就感觉自己会寄。2022.8.19这时候才想起来写博客,是不是有点晚了(这几天都在昆山万怡酒店摸鱼,隔两天考一次多校联考,其他学校暴打hsy,其他大佬暴打我Q......
  • P1967 [NOIP2013 提高组] 货车运输 题解
    题目描述A国有\(n\)座城市,编号从\(1\)到\(n\),城市之间有\(m\)条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有\(q\)辆货车在运输货物,司机们想知道......
  • 【LeetCode】101.对称二叉树
    【LeetCode】101.对称二叉树/* *转载请说明出处与作者*作者:多巴胺dopamine*/一问题描述1题目给你一个二叉树的根节点root,检查它是否轴对称。示例1:输......
  • 2022-8-17 mysql 第三天
    DQL查询语言子查询按照结果集的行列数不同,子查询可以分为以下几类:标量子查询:结果集只有一行一列(单行子查询)列子查询:结果集有一列多行行子查询:结果集有一行多列表子......