后继者:找出二叉搜索树中指定节点的“下一个”节点

2023-11-04

后继者:

设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。

如果指定节点没有对应的“下一个”节点,则返回null。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/successor-lcci

在这里插入图片描述

public class InorderSuccessor {
    public static TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
        Deque<TreeNode> stack = new ArrayDeque<TreeNode>();
        TreeNode prev = null, curr = root;
        while (!stack.isEmpty() || curr != null) {
            while (curr != null) {
                stack.push(curr);
                curr = curr.left;
            }
            curr = stack.pop();
            if (prev == p) {
                return curr;
            }
            prev = curr;
            curr = curr.right;
        }
        return null;
    }

    public static void main(String[] args) {
        TreeNode root = new TreeNode(2);
        TreeNode tn1 = new TreeNode(1);
        TreeNode tn2 = new TreeNode(3);
        root.setLeft(tn1);
        root.setRight(tn2);
        TreeNode tn = inorderSuccessor(root,tn1);
        System.out.println(tn);
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

后继者:找出二叉搜索树中指定节点的“下一个”节点 的相关文章

  • 使用cameltestsupport进行Camel单元测试,模板始终为空

    我正在用 Camel 做一个简单的单元测试 我想做的就是从文件 在资源下 读取 JSON 内容 将其发送到 Java 类进行验证 这是我试图测试的路线 无论我做什么 模板 我用来发送正文 json 始终为空 这是我的代码 public cl
  • 为什么 java 编译器不报告 Intellij 中多播表达式的未经检查的强制转换警告?

    为什么下面的代码没有报告 Intellij IDEA 的未经检查的警告jdk 1 8 0 121自从Supplier
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • Java套接字:在连接被拒绝异常时重试的最佳方法?

    现在我正在这样做 while true try SocketAddress sockaddr new InetSocketAddress ivDestIP ivDestPort downloadSock new Socket downloa
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • 内存一致性 - Java 中的happens-before关系[重复]

    这个问题在这里已经有答案了 在阅读有关内存一致性错误的 Java 文档时 我发现与创建 发生 之前 关系的两个操作相关的点 当语句调用时Thread start 每个具有 与该语句发生之前的关系也有一个 与 new 执行的每个语句之间发生的
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • Java:多线程内的 XA 事务传播

    我如何使用事务管理器 例如Bitronix http docs codehaus org display BTM Home JBoss TS http www jboss org jbosstm or Atomikos http www a
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi
  • 在哪里存储 Java 的 .properties 文件?

    The Java教程 http download oracle com javase tutorial essential environment properties htmlon using Properties 讨论如何使用 Prop

随机推荐

  • 人工智能与机器学习著名会议

    转自论坛http www ieee org cn dispbbs asp BoardID 62 replyID 31567 id 29962 star 1 skin 0 作者好像是南大周志华老师 我知道的几个人工智能会议 一流 下面同分的按
  • 【华为OD机试真题 JAVA】字符串分割(二)

    JS版 华为OD机试真题 JS 字符串分割 二 标题 字符串分割 时间限制 1秒 内存限制 262144K 语言限制 不限 给定一个非空字符串S 其被N个 分隔成N 1的子串 给定正整数K 要求除第一个子串外 其余的子串每K个字符组成新的子
  • element ui 前台模板_一个干净优雅的Element UI Admin模板

    Element UI Admin 一个干净优雅的Element UI Admin模板 一个大型单页应用离不开合理的项目结构和一些简单的封装 Start 克隆或者下载这个仓库 进入项目目录安装依赖 yarn Develop serve wit
  • python:基于朴素贝叶斯算法的垃圾邮件过滤分类

    目录 一 朴素贝叶斯算法 1 概述 2 推导过程 二 实现垃圾邮件过滤分类 1 垃圾邮件问题背景 2 朴素贝叶斯算法实现垃圾邮件分类的步骤 3 python实现 参考学习网址 https blog csdn net weixin 59450
  • Nacos适配Oracle12c【亲测可用、保姆级教学】

    Nacos适配Oracle12c 前言 内容准备 数据SQL 源码项目 项目初始化 提取Nacos启动包 启动Nacos 尝试访问 其他问题 IDEA 报错找不到符号com alibaba nacos consistency entity
  • 华为OD机试 - 字符串加密(C++ & Java & JS & Python)

    描述 有一种技巧可以对数据进行加密 它使用一个单词作为它的密匙 下面是它的工作原理 首先 选择一个单词作为密匙 如TRAILBLAZERS 如果单词中包含有重复的字母 只保留第1个 将所得结果作为新字母表开头 并将新建立的字母表中未出现的字
  • 局域网IP地址不够用怎么办?快速解决局域网IP地址不够用

    目录 前言 设置局域网的IP地址数量 1 LAN地址设置 2 DHCP服务器设置 增加路由器层级或者使用软路由 通过三层交换机实现VLAN 总结 前言 在网络如此发达的时代 越来越多的设备需要连接网络 特别是当前智能家居 物联网的新型产业的
  • Maven 编译遇到 Process terminated【四种情况全部解决】

    情况一 配置文件 settings xml 出错 解决方法1 1 1 项目编译报错如下 1 2 点击 项目名 提示找到出错文件 1 3 点击查看出错文件 在idea中打开了settings文件 找到提示的报错位置 1 4 原因及解决办法 原
  • Altium中网络标签、端口、离图以及编译范围的设置区别?

    1 Altium Designer多图纸功能 原理图主次分层次 Altium Designer多图纸功能 原理图主次分层次 1 1 各类网络标识符 由于我们使用到多图纸功能 这时需要考虑图纸间的线路连接 在单个图纸中 我们可以通过简单的网络
  • pandas数据处理大全(必备)

    目录 文章目录 目录 pandas读取文件 pandas存储文件 pandas处理空值和缺失值 pandas创建空dataframe dataframe索引值的修改 dataframe选择行与列 dataframe转置 dataframe添
  • Nodejs 中的非阻塞I/O、异步和事件驱动

    前言 Node js使用 事件驱动机制 具有非阻塞的I O模型这样的特点 Node js中的大多数Api都用到了异步函数 那麽又该如何获取异步函数返回的数据呐 废话不多说 来看看本次分享 都有哪些亮点吧 一 Nodejs 的 非阻塞 I O
  • 使用VS2019 开发Linux C++ 程序

    第一步 注 如果Windows下面查询不到dns也可以不设置静态IP地址 直接跳到第二步 1 先将自己的Linux 系统设为静态IP 具体操作如下 修改 etc network interfaces 地址配置文件 如下所示 操作 代码 修改
  • 网络存储ISCSI详解

    一 网络存储 目前应用最为广泛的两种数据存储设备 NAS与SAN 1 NAS NAS的全称是Network attached storage 即网络附加存储 并不需要单独的网络用于存储IO 更适用于中小型的存储解决方案 NAS设备通常是一个
  • 关于PID的输入输出是什么--供自己复习使用

    本人也是个新手 最近对平衡车感兴趣 所以恶补了一些关于pid的知识 下面是关于pid的文章 后续在平衡车上有进展也会出一些关于平衡车的文章 第一次写文章 有许多的不足之处 希望给位网友给予指正 在过程控制中 按偏差的比例 P 积分 I 和微
  • Linux文件解压缩:tar: /xxx: Not found in archive

    因为压缩文件使用的相对路径 如果在解压是使用绝对路径需要加上 C指令 tar zxvf xxx tar gz C usr local apps
  • 5G到底厉害在什么地方?和4G有什么不同?

    5G给大家的第一个印象肯定就是速度很快 秒下电影 这也是媒体大力宣传的一个点 5G的速度的确比4G快了很多 但是5G不仅仅是速度大大提高了 还有其他更重要的优点 不知道你有没有这种感觉 4G的速度已经挺快了啊 我们手机看视频一点都不卡啊 有
  • mpvue中小程序版本更新

    在App vue中 onLaunch if wx canIUse getUpdateManager const updateManager wx getUpdateManager updateManager onCheckForUpdate
  • Server-Sent Events 一种轻量级的Push方式

    文章目录 SSE工作原理 SSE的特点 SSE的推送数据格式 SSE的使用 客户端 服务端 效果展示 简单来说 Server Sent Events 简称SSE 是服务端发送事件 即服务端Push的一种机制 SSE工作原理 一般来说HTTP
  • 封装NavLink组件

    之后可以通过
  • 后继者:找出二叉搜索树中指定节点的“下一个”节点

    后继者 设计一个算法 找出二叉搜索树中指定节点的 下一个 节点 也即中序后继 如果指定节点没有对应的 下一个 节点 则返回null 来源 力扣 LeetCode 链接 https leetcode cn problems successor