数据结构-树-对比树是否相等(Java语言)

Java语言的数据结构 数组是最基本的数据结构之一,它是一组固定数量的元素的集合。这些元素的类型可以是基本数据类型,也可以是对象类型。固定大小:数组在创建时大小固定,无法动态变化。元素类型相同:数组中的元素类型必须相同。随机访问:通过索引可以快速访问数组中的任意元素,时间复杂度为O(1)。链表是一种线性数据结构,由一组节点组成,每个节点包含两个部分:数据部分和指向下一个节点的指针。与数组相比,链表具有动态大小的优点,但随机访问性能较差,时间复杂度为O(n)。 阅读详情

详细的代码可见github:

https://github.com/AbitGo/myClassWork/tree/master/workspace_ds

 两种递归式方法,原理:首先对比根节点,再依次对比左右结点。

 

详细代码实现:

 

public boolean isEqual(BiTreeNode t1, BiTreeNode t2) {
        if (t1 == null && t2 == null) {
            return true;
        }
        //当两个节点都不为空时
        if (t1 != null && t2 != null) {
            if (t1.data.equals(t2.data)) {
                //左子树是否相等
                if (isEqual(t1.lchild, t2.lchild)) {
                    //右子树是否相等
                    if (isEqual(t1.rchild, t2.rchild)) {
                        return true;
                    }
                }
            }
        }
        //当剩下只有一个不为空,则返回false
        return false;
    }

    public boolean isEqual1(BiTreeNode t1, BiTreeNode t2) {
        if (t1 == null && t2 == null) {
            return true;
        }
        //当两个节点都不为空时
        else if (t1 != null && t2 != null) {
            //必须满足三个条件
            //1。两个结点的值相等
            //2。左子树相等
            //3。右子树相等
            return (t1.data.equals(t2.data) && (isEqual1(t1.lchild, t2.lchild)) && (isEqual1(t1.rchild, t2.rchild)));
        }
        //当剩下只有一个不为空,则返回false
        return false;
    }

 

java实现的Trie树数据结构 最近在学习的时候,经常看到使用Trie树数据结构来解决问题,比如“ 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。” 该如何解决? 有一种方案就是使用Trie树加 排序实现 。 什么是Trie 树呢?也就是常说的字典树,网上对此讲得也很多,简单补充一下个人理解: 它实际上相当于把单词的公共部分给拎出来,这样一层一层往上拎直 阅读详情

相关推荐

Codesys—Modbus RTU称重变送器通讯案例

Codesys控制器使用标准的Modbus库,与支持ModbusRTU的称重变送器进行通讯的案例

原来你也__的博客 2739

数据比对 算法 java_数据结构与算法——常用排序算法及其Java实现

数据结构与算法——常用数据结构及其Java实现经过前面文章的铺垫,我们巩固了基础数据结构的知识,接下来就可以进入算法的巩固阶段了。首先我们来看常见的排序算法。冒泡排序原理:依次比较相邻的两个数,将小数放在前面(左边),大数放在后面(右边),就像冒泡一样具体操作:第一趟,首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将...

weixin_36128337的博客 798

彩票预测的可能性与算法分析

彩票作为一种以随机数为基础的赌博形式,吸引了大量希望一夜暴富的参与者。尽管许多人希望通过某种方式预测彩票结果,以增加中奖几率,但彩票预测的可能性依然是一个充满争议和误解的话题。本文将探讨彩票是否能够预测的理论依据,分析可能的预测算法,并解释这些算法为何在实际应用中难以奏效。

m0_38012434的博客 2万+

java比两棵树是否相等_判断两个树是否相同&&判断一棵树是否是一棵树的子树

判断两棵树是否相同方法:对两棵树同时做相同的递归判断其值或者是结构是否相同。以下代码用的是前序遍历。递归方法(毕竟递归好理解而且代码少得可怜)。比较啰嗦的是指针为空的情况,只要把这些情况单独列出来就可了。javapublic boolean isSame(TreeNode s, TreeNode t){if(s==null&&t==null) return true;if(s==n...

weixin_35724794的博客 901

KUKA 虚拟调试实战——打通Simpro4.1与OfficeLite8.6的通信与实时控制链路

本文详细介绍了KUKA虚拟调试实战,重点解析如何打通Simpro4.1与OfficeLite8.6的通信与实时控制链路。通过环境搭建、权限配置、机器人型号匹配等关键步骤,帮助工程师高效完成机器人轨迹规划和PLC联锁逻辑验证,大幅降低真机调试风险。文章还提供了典型报错解决方案和实时控制优化技巧,适用于工业机器人仿真与培训场景。

weixin_30907935的博客 445

MQTT在智能家居中的实战:用Android手机控制ESP8266设备(基于EMQX)

本文详细介绍了如何利用MQTT协议构建一个完整的智能家居控制系统,通过Android手机App远程操控ESP8266设备。文章提供了从EMQX服务器部署、ESP8266端Arduino固件开发到Android客户端搭建的完整实战指南,并深入探讨了系统联调、稳定性优化与安全加固等关键环节,为物联网开发者提供了一套可复用的解决方案。

ujm567890的博客 457

Java比较器(三) 利用二叉树链表进行对象数组排序

二叉树:一个节点有左右两个子节点,左节点比中节点小,右节点比中节点大 创建一个简单的二叉树链表模型: //实现二叉树模型 public class BinaryTree { private class Note { private Note left;//左节点数据 private Note right;//右节点数据 //实现二叉树排序的主要过程是利用Comparable子类对象中的compareTo方法进行排序,故存储的所有对象都应该是Co

weixin_45580169的博客 437

labview的TDMS文件读写

本文先介绍TDMS概念和文件结构,然后介绍VI如何使用,最后分析一个labview的自带范例

观则明的博客 1万+

(比较器)详解java中TreeMap和TreeSet排序——Comparable和Comparator

详解

weixin_46096297的博客 1157

【原创】下载RealEstate10K数据集原始视频的方法

目前互联网上能搜到下载RealEstate10K数据集原始视频的方法都已经不能用了,这篇博客介绍一种目前可用的下载RealEstate10K数据集原始视频的方法,并给出自动化的脚本代码。

沉迷单车的追风少年 2461

逻辑回归:利用Python实现二分类算法

通过使用Python编写的代码,我们可以训练逻辑回归模型并进行预测。接下来,我们将实现逻辑回归算法的训练函数。训练函数将接受训练数据集X和对应的标签y,以及学习率alpha和迭代次数num_iterations。训练完成后,我们可以使用训练得到的参数theta来进行预测。在这个例子中,我们有一个包含4个样本的训练数据集X,每个样本有两个特征。在这个例子中,如果预测概率大于等于0.5,则预测为类别1,否则预测为类别0。现在,我们可以使用训练函数来训练模型。根据给定的样本x_new,预测函数将返回相应的类别。

XlltEditor的博客 326

Java 数据结构对比

ArrayList 优点:查找快,尾部插入(删除)快 缺点:删除(插入) 头部(中间)的元素慢 查找快:是因为内存是连续的,0xabcdefg + i * 4 可以快速找到元素 尾部插入(删除)快:不需要 arrayCopy LinedList 优点:插入(删除)速度快 缺点:查找速度慢 插入(删除)速度快:双向链表的数据接口,只需要修改指向(prv、next)就可以完成 查找速度慢:验证链表一直往下找 HashMap 1.7 之前:数组 + 链表 1.8 之后:数组 + 链表 + 红黑树 优点:结

丁少帅的博客 381

Trae 保姆级使用指南,零基础小白也能实现编程。

Trae 使用指南 Trae AI 使用 零基础编程 满血版 DeepSeek-R1&V3 AI IDE 深度理解中文开发场景 傻瓜式编程 编程入门 开发入门

Mr.L-OAM的博客 5816

Java如何判断两个集合的元素是否完全相等

Java如何判断两个集合的元素是否完全相等     博主最近在工作的时候遇到了这样的一个需求,前端的页面提交一个表单数据,传到后台,我需要做判断这个表单和已有的表单数据是否有完全相同的,如果有相同的数据,那么就返回一个false,这一个表单不能被保存,如果不同,就可以保存到数据库中。 一,实现 1. 最简单粗暴的方法,遍历循环 package list.d...

Ecloss 5万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【数据结构】判断两棵树是否相等的算法

下面用先根遍历的思路描述算法的步骤: 若两棵二叉树都为空,则两棵二叉树相等,返回true; 若两棵二叉树都非空,则 若根结点的值相等,则继续判断它们的左子树是否相等; 若左子树相等,则再继续判断它们的右子树是否相等; 若右子树也相等,则两棵二叉树相等,返回true。 任何其他情况都返回false 二叉链式存储结构的结点类描述: package tree; public class BiTre...

没有感情的代码机器的博客 4524

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

判断两棵二叉树是否相等(Java实现)

判断树是否相等,就是判断树中的每一个节点是否相等,根节点和根节点做比较,根节点的左子节点和左子节点作比较,右子节点和右子节点作比较,直到没有节点比较为止,中间只要一个节点不相等,就返回false,只有都相等才返回true。 这里是树结构,遍历的话只能通过递归调用遍历每一个节点以及它的左右子节点。考虑使用递归的思想。但是递归需要判断终止条件,这里终止条件就是节点为空,它的父节点已经...

feinifi的博客 3250

【Java数据结构】树

java集合框架:树

2303_77535762的博客 1987

数据结构---树(所有类型的树总结)

文章目录数据结构---树1.二叉树2.二叉查找树-BST3.平衡二叉树-AVL4.红黑树5.哈夫曼树6.B树7.B+树8.R树总结 数据结构—树 本章总结数据结构中一些树的特征和结构。转载自这里 1.二叉树 二叉树:最多有两颗子树的树被称为二叉树。 二叉树又分为斜树,满二叉树,完全二叉树: 斜树:所有节点都只有左子树的二叉树叫做左斜树,所有节点都只有右子树的二叉树叫做右斜树。(本质就是链表) 满二叉树:二叉树中所有非叶子结点的度都是2,且叶子结点都在同一层次上。 完全二叉树:如

小皮皮LL的博客 7735

Java如何判断数组是否相等呢?

数组判断是否相等的方法分享

qq_25073223的博客 3302

java比较json是否相等_比较任意两个JSON串是否相等(比较对象是否相等)JAVA版

废话少说,直接入题。在面向对象语言中,经常会比较两个对象是否相等,而比较的大多是实体类实例,也就是封装数据的那些类实例,或者是Map、List互相嵌套成的复杂数据结构。比较对象是否相等,常见的思路是重写equals方法,但鉴于对象的种类多变,嵌套层次复杂,仅仅靠重写equals是很难实现的。小菜的思路是可以把对象序列化,由于这些对象均是用来表达数据结构,因此可以直接转换成JSON字符串,用字符串来...

weixin_33977645的博客 1584

java中的数据结构——树

树 树形结构是一种层级式的数据结构,由节点和连接它们的边组成, java语言编写的程序中常常用引用来表示边。根是树中顶端的节 点:它没有父节点。节点表示保存在树中的数据对象。非平衡树是 指根左边的后代比右边多,或者相反。 区分树和图的主要特征是树中不存在环路。 树的节点 Root,parent,child,leaf,sibling 。 树的主要类型 N元树 平衡树 二叉树 二叉搜索树 AVL树 红...

lx_Frolf的博客 6550

基础数据结构c语言版——树篇

c语言实现一些了树,持续更新

2503_90403439的博客 1143

java 比较两个json对象_比较任意两个JSON串是否相等(比较对象是否相等)JAVA版

废话少说,直接入题。在面向对象语言中,经常会比较两个对象是否相等,而比较的大多是实体类实例,也就是封装数据的那些类实例,或者是Map、List互相嵌套成的复杂数据结构。比较对象是否相等,常见的思路是重写equals方法,但鉴于对象的种类多变,嵌套层次复杂,仅仅靠重写equals是很难实现的。小菜的思路是可以把对象序列化,由于这些对象均是用来表达数据结构,因此可以直接转换成JSON字符串,用字符串来...

weixin_39785858的博客 3796

数据结构之树(JAVA实现)

1. 什么是树 树(Tree)是一种抽象数据类型,用来模拟实现具有树状类型结构的数据集合。它具有n(n>=0)个有层次的有限结点。当n=0时,称为空树;n>0时,其余结点分为m个互斥的有限集合T1,T2,T3,每个集合分别称为子树。 2. 树的性质 3. ...

weixin_38419670的博客 7866

深入理解Java数据结构:树

在计算机科学中,树是一种重要的数据结构,具有广泛的应用。它是一种非线性的数据结构,由节点和边组成,可以用来表示层次关系、组织结构、排序等。本文将深入介绍树的基本概念、常见的树结构以及它们在Java编程中的应用。树作为一种重要的数据结构,在计算机科学中具有广泛的应用。通过了解树的基本概念、常见的树结构以及它们在Java编程中的应用,我们可以更好地理解和应用树结构来解决实际问题。合理选择和使用树结构,能够提高程序的效率和性能,实现更加高效的数据组织和操作。

Hhzzy99的博客 4200

数据结构——树的概述

引言 对于大量的输入数据,链表的线性访问时间太慢,不宜使用。本篇讨论一种简单的数据结构——树,它大部分操作的运行时间平均为O(logN)O(logN)O(logN)。数据结构中有很多树的结构,其中包括二叉树、二叉搜索树、2-3树、红黑树等等。 基本概念 树(tree)是一些节点的集合。该集合可以是空集,若不是空集,则树由称为根(root)r的节点以及0个或 多个非空的子树组成。 每颗子树的根就做根...

日积月累,天道酬勤 3164
上一篇: 数据结构-树-获取深度(Java语言)
下一篇: 数据结构-图-组建图(Java语言)
夜石
博客等级 码龄10年 89粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值