Java 中用于中序遍历的 Morris 遍历2024 年 9 月 10 日 | 阅读 3 分钟 在本节中,我们将学习 Java 中的 Morris 中序遍历。在 Morris 遍历中,我们可以在不借助递归或栈的情况下遍历树。Morris 遍历基于线索二叉树。在此遍历中,我们进行内部修改以创建指向中序后继的内部链接。最终,我们恢复修改,以使原始树恢复原状。 Morris 中序遍历算法以下是 Morris 遍历(中序)涉及的步骤。
实施让我们使用上面描述的算法来看一下 Morris 中序遍历的实现。 文件名: BTree.java 输出 The inorder traversal of the binary tree is: 1 8 4 6 9 7 时间复杂度:我们观察到树的每条边最多被遍历 3 次。相同的额外边数量,与输入树相同,被移除和创建。因此,上述程序的总时间复杂度为 O(n)。 注意:在很多地方,人们说递归方法进行中序遍历不消耗任何空间。然而,这是不正确的。在递归中,即使我们没有显式提供栈,也会使用栈。Morris 遍历可以通过对二叉树进行的内部修改来工作。如果没有内部修改,Morris 遍历将无法工作。 下一个主题Java 中的 Morris 前序遍历 |
CountDownLatch 类是用于并发执行的另一个重要类。它是一个同步辅助工具,允许一个或多个线程等待,直到另一个线程中正在执行的一组操作完成。它使用我们传递的计数进行初始化...
5 分钟阅读
Java 是一种通用且广泛使用的编程语言,以其健壮性和灵活性而闻名。软件开发中的一项常见任务是在不同格式之间转换数据,例如 Java Map 和 JSON(JavaScript Object Notation)。JSON 是一种轻量级且易于人类阅读的数据交换格式...
阅读 4 分钟
? 抽象类是不能实例化的 Java 类,但可以为它们的具体子类提供一组方法和属性来实现。抽象类通常用于构建一组具有某些共享行为但其他行为不同的相似类。抽象...
阅读 4 分钟
给定一个具有唯一值的整数数组,用于查找最大整数。检查数组中的最大数字是否至少是其他所有数字的两倍。如果是,则返回最大元素的索引;如果不是,则返回 -1。示例 1:输入:int...
阅读 4 分钟
在 Java 中,多态性是面向对象编程的一个概念,它允许我们以不同的形式执行单个操作。在本节中,我们将仅讨论 Java 中的动态多态性。多态性“多态性”一词是由两个词组合而成的,即 ploy 和 morphs。即...
阅读 3 分钟
A 指的是通过交换每个子树的左右子节点来创建二叉树的镜像版本。此过程会产生原始树结构的对称反射。它通常使用递归或迭代方法来解决。输入:1 2...
阅读9分钟
在本节中,我们将学习什么是不可达数,并创建 Java 程序来检查给定数字是否是不可达数。不可达数程序经常在 Java 编码面试和学术界中出现。不可达数 一个数 N 被称为...
阅读 3 分钟
在 2D 网格中创建类似于螺旋或同心环的特定模式被称为“在矩阵中形成线圈”。为了完成此操作,通常需要找到矩阵元素的有序遍历,其中值按顺序和结构化的方式分组。
7 分钟阅读
我们得到一个输入数组。该输入数组是二叉搜索树 (BST) 的前序遍历。任务是检测并打印二叉搜索树的叶子节点。叶子节点是树中没有...
阅读9分钟
在 Java 中,泛型主要用于提供创建能够使用任何数据类型(包括类型安全)工作的类和方法的机制。当在 Java 中使用泛型时,对象的类型通常在……
阅读9分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India