判断树是否相等,就是判断树中的每一个节点是否相等,根节点和根节点做比较,根节点的左子节点和左子节点作比较,右子节点和右子节点作比较,直到没有节点比较为止,中间只要一个节点不相等,就返回false,只有都相等才返回true。

这里是树结构,遍历的话只能通过递归调用遍历每一个节点以及它的左右子节点。考虑使用递归的思想。但是递归需要判断终止条件,这里终止条件就是节点为空,它的父节点已经是叶子节点了。

使用Java实现代码如下:

package com.xxx.algorithm.tree;public class Tree {public TreeNode root;public void insert(int data){TreeNode node = new TreeNode(data);if(root==null){root = node;}else{TreeNode cur = root;TreeNode parent = null;while(true){parent = cur;if(data<cur.data){         cur = cur.left;if(cur==null){parent.left = node;break;}}else{cur = cur.right;if(cur==null){parent.right = node;break;}}}}}public void preOrder(TreeNode node){if(node!=null){System.out.print(node.data+" ");preOrder(node.left);preOrder(node.right);}}public void inOrder(TreeNode node){if(node!=null){inOrder(node.left);System.out.print(node.data+" ");inOrder(node.right);}}public static boolean equals(TreeNode n1,TreeNode n2){if(n1==null && n2==null)return true;else if(n1!=null && n2!=null){if(n1.data==n2.data)return equals(n1.left, n2.left) && equals(n1.right, n2.right);}return false;}public static void main(String[] args) {Tree tree = new Tree();tree.insert(10);tree.insert(5);tree.insert(12);tree.insert(3);tree.insert(7);Tree tree2 = new Tree();tree2.insert(10);tree2.insert(5);tree2.insert(12);tree2.insert(3);tree2.insert(7);tree.preOrder(tree.root);System.out.println();tree.preOrder(tree2.root);System.out.println();System.out.println(equals(tree.root, tree2.root));}}class TreeNode{public int data;public TreeNode left;public TreeNode right;public TreeNode(int data){this.data = data;this.left = null;this.right = null;}
}

这里模拟节点五个节点的树,当每个节点都相同的时候,他们是相同的,运行程序,打印信息如下:

10 5 3 7 12
10 5 3 7 12
true

这两棵树是相等的,如果少一个节点,或者某一个节点的数据不一样,那么也会导致判断的时候返回false,即两棵树不相等。

10 5 3 7 12
10 5 3 8 12
false

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

  1. python代码判断两棵二叉树是否相同

    python代码判断两棵二叉树是否相同 给定两个二叉树,编写一个函数来校验它们是否相同.如果两个树在结构上相同,并且结点具有相同的值,则认为它们是相同的. 判断两个二叉树是否是相同的,相同的依据是 二 ...

  2. Python算法——判断两棵二叉树是否相等

    要求: 如何判断两颗树是否相等?(两棵树相等是指这两课树有着相同的结构,并且在相同位置上的结点有相同的值) 分析: 如果两颗二叉树root1, root2相等, 那么root1和root2结点的值相同 ...

  3. 判断两棵二叉树是否同构,三种实现方式(递归、队列、堆栈)

    一.同构的概念: 给定两棵二叉树 T1 和 T2,如果T2可以通过若干次左右孩子互换就变成T1,那么我们称这两棵树是同构的 例1:下图两棵树同构,因为对T2,交换A左右孩子:交换B左右孩子,交换G左右 ...

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

    下面用先根遍历的思路描述算法的步骤: 若两棵二叉树都为空,则两棵二叉树相等,返回true; 若两棵二叉树都非空,则 若根结点的值相等,则继续判断它们的左子树是否相等: 若左子树相等,则再继续判断它们的 ...

  5. 二叉树常见算法题(单值二叉树、二叉树的最大深度、反转二叉树、判断两颗二叉树是否相同、对称二叉树、一颗二叉树是否是另一颗二叉树的子树)

    这里的代码都是递归实现的,再强调下二叉树的概念,二叉树的构成有两种情况: 1.空树 2.根节点 + 左子树 + 右子树(这里的左子树和右子树又是一颗二叉树) 可以看出二叉树就是递归定义的,下面的算法题 ...

  6. 6.36③ 若已知两棵二叉树B1和B2皆为空,或者皆 不空且B1的左、右子树和B2的左、右子树分别相似, 则称二叉树B1和B2相似。试编写算法,判别给定两 棵二叉树是否相似。

    6.36③  若已知两棵二叉树B1和B2皆为空,或者皆 不空且B1的左.右子树和B2的左.右子树分别相似, 则称二叉树B1和B2相似.试编写算法,判别给定两 棵二叉树是否相似. 要求实现下列函数: S ...

  7. 判断一棵二叉树是否为完全二叉树-Java

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net package live.every.day.Pro ...

  8. 判断两棵树是否相等与使用二叉链表法建立二叉搜索树

    //判断两个二叉树是否相等 //提问如果两个二叉树的前序遍历相等,能否说明,这两个树相等? //答案是否定的,只有这两个树的 A前序=B前序,A中序=B中序才可以. BOOL isEqualTree( ...

  9. 牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案

    牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案 题解: 搜索二叉树满足以下性质: 1.非空左子树的所以键值小于其根节点的键值 2.非空右子树的所有键值大于其根节点的键值 ...

最新文章

  1. 疫情可视化,基于知识图谱的AI“战疫”平台如何做?
  2. 机器学习特征工程之特征缩放+无量纲化:最大绝对值缩放(MaxAbsScaler)
  3. unity模块切换_(一)Unity3D模块介绍
  4. 利用python实现ORM
  5. 中设置colorbar_【值得收藏】如何画出学术论文中需要的各种精美插图,看这一篇就够了!...
  6. windows端口备忘
  7. Linux内存管理(一)——从硬件角度看内存管理
  8. html几个数据包,报文和数据包的区别
  9. 程序猿,是如何逆袭的
  10. Oracle JDE计划BOM应用
  11. 抗DoS、DDoS防火墙产品大检阅(转)
  12. 基于无监督深度学习的单目深度和自身运动轨迹估计的深度神经模型
  13. 学习笔记1——常用的注意力机制(即插即用)
  14. python表白玫瑰花绘制——情人节表白(亲测)
  15. 教你一个快递查询单号查询物流的简单方法
  16. mysql查询和更改时区
  17. cadence allegro - PCB设计规范
  18. 百度云加速CDN配置
  19. Linux系统下安装alsa-lib-1.1.8
  20. 【ffprobe】查看TS : 视频和音频的pts、dts;查看文件的音频包/视频包总数

热门文章

  1. BLEU 值简单测试工具
  2. opencv3.4+vs2017调用摄像头以及常见错误:[ WARN:0] Failed to set mediaType (stream 0, (640x480 @ 30) MFVideoForma
  3. Python入门100个实例(20)——对象的例子
  4. 二进制乘法的底层实现
  5. 【博客美化】01.推荐和反对炫酷样式
  6. 全球与中国纤维素乙醇市场深度研究分析报告
  7. JavaScript学习之大小写转换
  8. [精彩短句]看到哪你流泪了
  9. 福建师范计算机应用基础考试内容,关于印发《福建师范大学 课程教学改革实施方案(试行)》的通知...
  10. PHP_VERSION的意思,php指的是_PHP_VERSION指什么