Check if a Tree is Isomorphic or Not in Java?2025年5月9日 | 阅读 4 分钟 树的同构是树数据结构中的一个基本概念。如果一棵树可以通过交换某些节点的左右子节点来转换为另一棵树,则称这两棵树是同构的。 这意味着这两棵树必须具有相同的结构,但子节点的顺序可能不同。在本节中,我们将探讨同构树的属性、它们的特征,以及一种使用Java递归检查同构的有效方法。 什么是同构树?如果一棵树可以通过在某些节点上交换左右子节点来转换为另一棵树,同时保持相同的结构,则称这两棵树是同构的。同构不考虑节点的实际值,只考虑它们的层级结构。 例如,考虑以下树 示例 1:同构树 树 1 和树 2 具有相同的结构,因为通过修改某些节点之间左右子节点的顺序,树 2 可以转换为树 1。 示例 2:非同构树 在这里,树 1 和树 2 不是同构的,因为它们的结构不同。 同构树的特征
方法:使用递归检查树同构递归方法比较两棵树的相应节点,并检查交换左右子节点是否使它们相同。步骤如下: 算法步骤 1. 基本情况
2. 递归检查
最终条件
文件名:IsomorphicTreeChecker.java 输出 The trees are isomorphic. 代码说明提供的 Java 应用程序通过一棵树可以转换为另一棵树来确定两棵 二叉 树是否具有同构关系,通过重新分配左右分支上的节点。 树节点的结构在 Node 类定义中出现。isIsomorphic() 函数使用递归来比较两棵树中的节点。它首先处理基本情况(空树、节点值不匹配),然后检查是否交换子节点后的同构性。 main 方法 构建了两棵树并调用 isIsomorphic(),打印它们是否同构。这种方法确保了 O(N) 的高效复杂度,使其适用于树结构比较。 复杂度分析时间复杂度:O(N) - 每个节点都会被访问一次。 空间复杂度:O(H) - 取决于树的高度(递归深度)。 结论树的同构是树结构比较中的一个关键概念。Java 提供了一种递归且高效的方法来确定两棵树是否同构。这种方法有助于涉及树数据结构的应用,例如编译器语法树、网络拓扑比较和数据库模式转换。理解树的同构对于改进算法问题解决中的树操作技术至关重要。 下一主题JDoodle Java |
JDK 8 引入了 IntPredicate 接口。java.util.function 包包含此接口。它使用整数值,并根据条件返回一个谓词值。由于它是一个函数式接口,因此也可以在 lambda 表达式中使用。方法包括:1. test():...
阅读 2 分钟
当谈到使用 Java 和 Selenium 进行 Web 自动化测试时,有一些基本工具和函数是每位自动化工程师都必须理解的。其中就包括 findElement() 和 findElements()。这些方法对于定位页面上的 Web 元素至关重要,但它们有不同的用途和...
5 分钟阅读
在 Java 中,可以使用 Java Collections Framework 提供的各种技术将数组转换为集合。Collections Framework 提供了一组接口和类来操作对象集合。要将数组转换为集,...
阅读9分钟
数据类型定义了存储在变量中的数据类型。类型指定了数据的种类(不同的大小和值)。Java 编程语言有两种数据类型:原始数据类型(预定义数据类型)和非原始数据类型。在本节中,我们将理解非原始数据类型...
5 分钟阅读
在 Java 中,复制数组意味着创建一个新数组,并将元素的内容从现有数组传输到新数组。这样做是为了使两个数组可以独立使用而不会相互影响。为什么我们需要复制数组?复制...
5 分钟阅读
在本节中,我们将讨论什么是“有害数”,并创建 Java 程序来检查给定的数字是否是“有害数”。“有害数”程序经常在 Java 编码面试和学术中出现。“有害数” 如果一个数字中 1 的总数……
阅读 4 分钟
Java 8 中的 distinct() 操作主要与流相关,用于从流中删除重复元素。Stream API 是在 Java 8 中推出的,用于提供与集合交互的更实用的方法,distinct() 操作就是其中之一。Syntax Stream<T> distinct() distinct() 的目的...
阅读 6 分钟
Java 是一种平台无关的编程语言。这意味着我们可以在具有 Java 解释器的平台上运行 Java。这是使 Java 平台无关的原因。Java 解释器将 Java 字节码(.class 文件)转换为操作系统可理解的代码...
阅读 3 分钟
什么是 Keystore?Keystore 是 Java 中的一个文件,它包含用于安全可靠地识别和验证用户、设备和服务的加密密钥和证书。Keystore 可以使用随附的 keytool 命令行软件生成和控制...
阅读 6 分钟
在本节中,我们将学习什么是 Hogben 数,并创建 Java 程序来计算 Hogben 数。Hogben 数程序经常在 Java 编码面试和学术界被问到。Hogben 数 Hogben 数是递归定义的数字:H(n) =...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India