Java 中查找二叉搜索树中的中序后继2025 年 5 月 12 日 | 阅读 4 分钟 节点在二叉搜索树 (BST) 中的有序后继是在有序遍历中遇到的下一个节点,其中节点按升序访问:先左子树,然后是根,最后是右子树。 要确定有序后继
示例 1:有右子节点的节点 考虑以下 BST 对于节点10,它有一个右子节点 (15),所以它的有序后继是15,这是 10 的右子树中最左边的节点。 示例 2:没有右子节点的节点 考虑以下 BST 对于节点15,它没有右子节点。15 的有序后继是20,这是 15 位于其左子树中的最近祖先。 示例 3:节点是最大节点 考虑以下 BST 对于节点30,它的右子树中没有节点,并且它是树中最大的节点,所以它没有有序后继。对于30 的有序后继,函数将返回null。 算法步骤 1:如果树为空(即根节点为 null),则返回 null,因为不存在有序后继。 步骤 2:如果目标节点有右子节点,则通过向左移动直到不再有左子节点来找到其右子树中最左边的节点,然后返回该节点。 步骤 3:如果没有右子节点,则从根开始遍历以找到后继,在向左移动时更新它。最后记录的大于目标值的节点就是有序后继。 步骤 4:比较目标值与当前节点的值
步骤 5:找到后继后,返回它。如果未找到后继,则返回 null。 实施输出 Inorder Successor of 40 is: 50 时间复杂度:O(H),其中 H 是树的高度(在最坏情况下,对于不平衡树,可能高达 O(N))。 辅助空间复杂度:O(1),因为只使用了几个额外的变量。 解释 该 Java 程序查找二叉搜索树 (BST) 中节点的有序后继。TreeNode 类表示一个带有值和左右子节点的节点。findLeftmost() 函数通过向左移动直到 null 来查找子树中最左边的节点。 findInorderSuccessor() 函数查找给定节点的后继。如果节点有右子节点,则后继是其右子树中最左边的节点;否则,该函数从根遍历,在向左移动时更新后继。main() 函数构建一个 BST,查找目标节点的后继,并打印结果。 下一个主题Java 中的等距数 |
在面向对象编程中,抽象被定义为隐藏用户不需要的细节(实现),而专注于基本信息(功能)。它提高了效率并降低了复杂性。在 Java 中,可以通过抽象类和抽象方法来实现抽象。抽象方法 在 Java 中,抽象方法是...
5 分钟阅读
当创建的对象无法更改时,Java 类就被认为具有不可变状态。对象的创建完成后,其状态永远不会改变。非共享的可变对象始终是线程安全的,这些对象是...
阅读 4 分钟
我们的主要关注点是元音集,因为元音集对于许多字符串操作问题通常很重要,其中一个问题是识别包含 K 个不同元音的给定字符串的最长子字符串。这个问题...
阅读 6 分钟
错误是在程序执行时出现的,问题、bug 或人为错误。异常会中断程序的流程并异常终止程序。不建议异常终止程序,因此我们需要...
阅读 6 分钟
在本节中,我们将学习如何在 Java 中查找链表的中间节点。我们还将探讨查找中间节点的各种方法。给定:链表的第一个节点或 Head 被给出(在我们的示例中是 14...
阅读 6 分钟
在安全通信和数据保护领域,加密库起着举足轻重的作用。Bouncy Castle for Java 就是这样一个获得广泛认可的库。该库提供了一套全面的加密算法和协议,为开发人员提供了强大的基础,用于...
阅读 4 分钟
Java 中的多线程 在 Java 中,多线程是指并发运行两个或多个线程的能力。在程序内可以独立运行的最小进程单元称为线程。多线程主要用于通过同时执行多个任务来提高程序性能。Java 的……
阅读 4 分钟
图像处理是计算机图形学和视觉的关键方面,涉及对图像的操纵和分析以提取有价值的信息或提高其质量。Java 凭借其强大的库和简单的语法,提供了强大的图像处理工具。图像的一个基本方面是...
阅读 6 分钟
Java 以其健壮且通用的特性,提供了多种方法将文件从一个位置复制到另一个位置。无论您是处理本地文件系统还是远程服务器,Java 丰富的 API 都使文件操作成为一项简单的任务。在本综合指南中,我们将探讨各种技术...
5 分钟阅读
词典顺序这个术语是一个数学术语,也称为:词典顺序、字典序、字母顺序或字典顺序。本节将涵盖词典顺序的主题、其定义以及其他详细信息。之后,我们将学习如何使用词典顺序的概念...
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India