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

数据结构:二叉树详解(二叉树性质、遍历、创建、判断两棵树是否相等) 二叉树是一种树形结构,其特点是每个节点至多只有 2 棵子树,并且子树又左右之分,次序不能颠倒,即二叉树是有序树。 阅读详情

下面用先根遍历的思路描述算法的步骤:
若两棵二叉树都为空,则两棵二叉树相等,返回true;
若两棵二叉树都非空,则

  1. 若根结点的值相等,则继续判断它们的左子树是否相等;
  2. 若左子树相等,则再继续判断它们的右子树是否相等;
  3. 若右子树也相等,则两棵二叉树相等,返回true。

任何其他情况都返回false

二叉链式存储结构的结点类描述:

package tree;

public class BiTreeNode {
	public Object data;
	public BiTreeNode lchild,rchild;  //左右孩子域
	
	//构造一个空节点
	public BiTreeNode() {
		this(null);
	}
	//构造一颗左、右孩子域为空的二叉树
	public BiTreeNode(Object data) {
		this(data,null,null);
	}
	
	//构造一棵数据域和左、右孩子域都不为空的二叉树
	public BiTreeNode(Object data,BiTreeNode lchild,BiTreeNode rchild) {
		this.data=data;
		this.lchild=lchild;
		this.rchild=rchild;
	}
}

二叉链式存储结构下二叉树类的描述:

package tree;

import java.util.LinkedList;
import java.util.Queue;
public class BiTree {
	public BiTreeNode root; //树的根节点
	public BiTree() {
	this.root=null;
	}
	
	public BiTree(BiTreeNode root) {
		this.root=root;
	}

	//判断两棵二叉树是否相等算法
	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.lchild,T2.rchild)) //右子树是否相等
						return true;
		return false;
	}
	
	//判断两棵二叉树是否相等的递归算法
	public boolean isEqual2(BiTreeNode T1,BiTreeNode T2) {
		if(T1==null && T2==null)
			return true;
		else if(T1!=null && T2!=null) {
			return (T1.data.equals(T2.data) && (isEqual(T1.lchild,T2.lchild)) && (isEqual(T1.rchild,T2.rchild)));
		}
		else 
			return false;
	}

}

python【数据结构与算法】判断两棵树是否相等 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def isSameTree(self, p, q): if p == None and q == None: 阅读详情

相关推荐

《python数据结构与算法2000讲》0100. 相同的树

给定两个二叉树 p 和 q。判断这两棵树是否相同。

IT 甄选推荐 326

检查两棵树是否相同

目录 一、题目 二、思路 三、代码实现 一、题目 二、思路 1.如果两个二叉树都为空,则两个二叉树相同 2.如果两个二叉树中有且只有一个为空,则两个二叉树一定不相同 3.如果两个二叉树都不为空,那么首先判断它们的根节点的值是否相同,若不相同则两个二叉树一定不同,若相同,再分别判断两个二叉树的左子树是否相同以及右子树是否相同 三、代码实现 class Solution { public boolean isSameTree(TreeNode p, TreeNode q) {

Poem_coder的博客 3945

11-4 AEB 算法原理及系统组成

本专题旨在探讨如何利用仿真软件开发自动紧急制动系统AEB,主要通过整理开发流程,实现从需求到验证的全流程掌握,为后续开发提供支持;同时,研究了如何在汽车自动驾驶仿真工具中开发自己的算法,并解决了从ISO、E-CNAP、GB/T以及交通法规等提炼出功能需求的问题,以快速实现原型模型的开发。本专题重点讲解了AEB的工作原理、系统/软件架构和需求、算法模型及实现、CCRs/CCRb/CCRm建模与仿真、VRU-AEB-B/P/M建模与仿真,同时还提供了测试用例,期待将AEB算法成功地产品化。

AIgraphX 8547

数据结构-判断两个树是否相同问题

1.相同的树 判断两个树是否相同,这种类型题目要用到解决二叉树最经典的递归思想,将大问题变成小问题,比如可以从好判断的方向入手,一个是空指针,另一个也是,这肯定是相同的,一个空指针,一个不是,这两个指针肯定不相同,这边可以用else if来减少代码量。两个指针指向的数据不同,这两个指针肯定不同,然后别的情况可以判断左子树是否相同,右子树是否相同来判断,递归一步步解决这个问题。 bool isSameTree(struct TreeNode* p, struct TreeNode* q) {

m0_66654161的博客 2648

【题解-洛谷】B3644 【模板】拓扑排序 / 家谱树

有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。给出每个人的后代的信息。输出一个序列,使得每个人的后辈都比那个人后列出。输出一个序列,使得每个人的后辈都比那个人后列出。如果有多种不同的序列,输出任意一种即可。),表示家族的人数。

写代码的犄角旮瘩 1062

基于FLUENT的圆柱绕流数值模拟与流场优化策略

本文详细介绍了基于FLUENT的圆柱绕流数值模拟方法与流场优化策略。从基础概念、建模技巧到湍流模型选择,全面解析了圆柱绕流模拟的关键技术,并提供了实用的网格划分和参数设置建议。通过具体案例展示了流动控制方法和优化流程,帮助工程师有效降低阻力系数,提升流场性能。

f6g7h8i9j的博客 703

数据结构作业-严蔚敏-5.3

文章目录一、题目描述二、解答1)判别两棵树是否相等2)交换二叉树每个结点的左孩子和右孩子3)计算二叉树的最大宽度 一、题目描述 以二叉链表作为二叉树的存储结构,编写下列算法: 1)判别两棵树是否相等 2)交换二叉树每个结点的左孩子和右孩子 3)计算二叉树的最大宽度(二叉树的宽度是指二叉树所有层中结点个数的最大值) 二、解答 1)判别两棵树是否相等 算法思想: 利用递归实现,递归结束的条件有三个:一是两棵树均为空,返回相等;二是只有一棵树为空,返回不等;三是根结点的数据域不等,返回不等。其他情况下则递归判断相

weixin_51273111的博客 3996

Excel药品说明书数据库:从零开始搭建医药数据查询系统(附完整模板)

本文详细介绍了如何从零开始搭建Excel药品说明书数据库,提供完整的医药数据查询系统模板。涵盖数据库架构设计、数据清洗标准化、智能查询系统搭建及维护优化,帮助医药从业者高效管理药品信息,提升查询速度和准确性。

weixin_28327051的博客 231

判断两棵树是否相等

思路:两棵树相等当且仅当rootA->data == rootB->data,且A和B的左右子树相等或左右子树互换相等 用递归的方式进行求解 (1)if(两棵树都为空)返回true (2)if(两棵树中一棵为空,另一棵不为空)返回false (3)if(数据相等) { if(两棵树的左子树相等) { if(两棵树的右子树相等) return true; } else if(第

lansexinchen的专栏 3366

【ZYNQ驱动双AD9361实战】(一)从官方参考设计到自定义移植

本文详细介绍了如何将ADI官方的单AD9361参考设计移植到ZYNQ平台以驱动双AD9361射频板卡。内容涵盖从环境搭建、官方工程架构解析,到硬件HDL工程修改(包括顶层设计、引脚分配及TCL脚本适配)以及Linux设备树软件配置的全流程实战指南,帮助开发者实现自定义双通道射频收发系统。

weixin_29170327的博客 362

Ubuntu 24.04.3 LTS 安装 OpenClaw 图文版

OpenClow安装指南

qq_17204557的博客 2548

判断两棵树互为同构java

boolean isSame(TreeNode root1,TreeNode root2){ if(root1 == null && root2 == null){ return true; } if((root1 == null && root2 != null) && root1 != null && root2 == null)){ return false; } return isSame

weixin_37632716的博客 284

MDF和DHF、DMR、DHR三者差异?注册与备案文件?医疗器械产品技术要求编写指导原则

定义:设计历史文档(DHF ) 指的是描述某医疗器械成品设计过程的有关记录。内容:DHF包括设计开发活动的所有记录。从最初的策划、客户需求、设计输入,设计输出、设计验证、设计确认、所有的设计评审,设计转换,以及设计变更相关的所有记录。均属于DHF的一部分。要求:各制造商应为每个类型的器械建立并保持设计历史文件。设计历史文件应包含或引用必要的记录,以证实设计符合经批准的设计计划和法规的要求。

学海无涯的专栏 9108

数据结构(树)算法设计题

数据结构(树)算法设计题 以二叉链表作为二叉树的存储结构,编写以下算法: (1)统计二叉树的叶结点个数。 (2)判别两棵树是否相等。 (3)交换二叉树每个结点的左孩子和右孩子。 实现参考代码:(1) int LeafNodeCount(BiTree T) { if(T==NULL) return 0; //如果是空树,则叶子结点个数为0 else if(T->lchild==NULL&&T->rchild==NULL) return 1; //判断结点是否是叶子

m0_52148779的博客 867

CUDA编程 - Nsight system & Nsight compute 的安装和使用 - 学习记录

在 cuda 编程中,经常会用到 Nsight system 和 Nsight compute 进行性能分析等,下面做个学习总结。本篇包括安装和常用分析思路总结,具体实践操作总结会放在下一篇博客。

点云算法工程师 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

104. Maximum Depth of Binary Tree&&100. Same Tree

这周学的是深度优先和广度优先,上学期学数据结构时候做树的有关问题时,用到递归,所以这周回忆一下上学期的树,就来两道简单的题目。首先是100题,这道题题目的意思是为了判断两棵树是相等的,很简单,只需要同时便利两棵树的节点,并比较他们的值即可。以下是题目和具体算法。 再来看看104题,这道题是要求树的深度,也是比较左右子树的高度即可,下面是题目和算法。 各位如果有什么好的方法,希望多多指点

myx16的博客 406

VC中sqlite的使用

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

一颗树为另一棵树的子树

//判断两棵树是否相等 bool _isSubtree(struct TreeNode* root, struct TreeNode* subRoot) { if(root==NULL&&subRoot==NULL) { return true; } if(root==NULL||subRoot==NULL) { return false; } if(root->val!=subRoot-&g..

Ds19415169988的博客 191

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

树---判断两棵树是否相等

问题描述:请实现两棵树是否相等的比较,相等返回1,否则返回其他值,并说明算法复杂度。 数据结构为:typedef struct TreeNode{ char c; TreeNode *leftchild; TreeNode *rightchild; }TreeNode;函数接口为:int CompTree(TreeNode* tree1,TreeNode* tree2);

爱橙子的OK绷的专栏 4544

【数据结构】检查两棵树是否相同

问题:给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: true 示例 2: 输入: ...

qq_42270373的博客 3021

【LeetCode刷题(数据结构)】:检查两颗树是否相同

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的输入:p = [1,2,3], q = [1,2,3]输出:true输入:p = [1,2], q = [1,null,2]输出:false输入:p = [1,2,1], q = [1,1,2]输出:false前言两个二叉树相同,当且仅当两个二叉树的结构完全相同,且所有对应节点的值相同。因此,可以通过搜索的方式判断两个二叉树是否相同。

优快云官方认证C/C++研发领域优质创作者 优快云官方2023年成都赛道Top3 第16届蓝桥杯C/C++软件赛四川赛区二等奖 带你玩转C/C++ 数据结构与算法 Linux系统编程/Linux网络编程 MySQL数据库 软件测试开发 691

java比两棵树是否相等_判断两棵树是否相等

题目:请实现两棵树是否相等的比较,相等返回1,否则返回其他值,并说明算法复杂度。数据结构为:typedef struct_TreeNode{char c;TreeNode *leftchild;TreeNode *rightchild;}TreeNode;函数接口为:int CompTree(TreeNode* tree1,TreeNode* tree2);注:A、B两棵树相等当且仅当Root-&...

weixin_34388311的博客 886

判断两棵树是否相等,是否是子树

给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 bool isSameTree(struct TreeNode* p, struct TreeNode* q) { if (p==NULL && q==NULL)//两个都为空 return ture; if (p!=NULL && ...

Darling_sheeps的博客 1237

(树)判断两棵树是否相等

题目:https://www.nowcoder.com/practice/9a9e74b71f944efab9992925f7f9a65e?tpId=46&tqId=29078&tPage=3&rp=3&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking 思路:这道题目比较简单,一般都是使用递归...

dingzhenzha7040的博客 1196

数据结构判断两棵树是否相等

【代码】数据结构判断两棵树是否相等。

weixin_62392668的博客 558
上一篇: 【LeetCode 203】移除链表元素
下一篇: 【LeetCode 35】二分查找之搜索插入位置
菜鸭子
博客等级 码龄8年 75粉丝 135原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值