判断两个二叉树是否相等c语言,判断两个二叉树是否相等c语言是否正确

本文目录一览:

C++编写算法判断两棵二叉树是否相等

C++编写算法判断两棵二叉树是否相等

笔试题目:C++编写算法判断两棵二叉树是否相等

题目:请实现两棵树是否相等的比较,相等返回0否则返回其他值。

解析:A、B两棵树相等,当且仅当RootA-c == RootB-c,而且A的.左右子树对应相等或者左右互换后相等。

思想是使用分治的方法,先判断当前节点是否相等(需要处理为空、是否都为空、是否相等),如果当前节点不相等,直接返回两棵树不相等;如果当前节点相等,那么就递归的判断他们的左右孩子是否相等。因为这里是普通的二叉树,所以A的左、右子树和B的右、左子树相等也是可以的。

C++代码:

#include

using namespace std;

typedef struct TreeNode{

char c;

struct TreeNode * left;

struct TreeNode * right;

};

/*判断两棵二叉树是否相等,如果相等返回0,如果不相等则返回1*/

int compareTree(TreeNode* tree1, TreeNode* tree2){

//用分治的方法做,比较当前根,然后比较左子树和右子树

bool tree1IsNull = (tree1==NULL);

bool tree2IsNull = (tree2==NULL);

if(tree1IsNull != tree2IsNull){

return 1;

}

if(tree1IsNull tree2IsNull){

//如果两个都是NULL,则相等

return 0;

}

//如果根节点不相等,直接返回不相等,否则的话,看看他们孩子相等不相等

if(tree1-c != tree2-c){

return 1;

}

return (compareTree(tree1-left,tree2-left)compareTree(tree1-right,tree2-right))

|

(compareTree(tree1-left,tree2-right)compareTree(tree1-right,tree2-left))

;

} ;

判断两个二叉树是否相等c语言

判断两个二叉树是否相等c语言通常可以用递归的函数来实现。在这个递归函数里,总的值函数,就等于根据碘元素相同,并且左子树相等,并且右子树相等

设计一个分治算法,判断两个二叉树是否相等。

判断当前节点是否相等, 各个子树是否相等, 嵌套调用.

输入当前节点, 输出是否相等

1, 判断当前节点是否相等, 不等则返回不等.

2, 判断左子树是否相等, 不等则返回不等.

3, 判断左子树是否相等, 不等则返回不等.

4, 返回相等

数据结构问题”编写一个判断两颗二叉树是否相等的程序”

2、程序源代码:

public class SimiliarTreeTest {

public static boolean test(BinNode t1,BinNode t2){

if(t1==nullt2==null)

return true;

else if(t1!=nullt2!=null)

{

return test(t1.left,t2.left)test(t1.right,t2.right);

}

return false;

}

}

3、测试类:

public class SimiliarilityTest {

public static void main(String[] args){

BSTInteger intTree=new BSTInteger();

BSTCharacter charTree=new BSTCharacter();

BSTString strTree=new BSTString();

Integer[] numbers={14,15,2,26,36,11,25,58,47,44,16,1};

Character[] chars={14,15,2,26,36,11,25,58,47,44,16,1};

String[] strs={“this”,”is “,”so “,”dispointed”,”and “,”i “,”am”,”trying”};

for(int i=0;istrs.length;i++){

strTree.insert(new BinNodeString(strs[i]));

}

for(int i=0;inumbers.length;i++)

intTree.insert(new BinNodeInteger(numbers[i]));

for(int i=0;ichars.length;i++)

charTree.insert(new BinNodeCharacter(chars[i]));

boolean b=SimiliarTreeTest.test(intTree.root, strTree.root);

System.out.println(“intTree and strTree are similiar with each other?”+b);

System.out.println(“—————–“);

b=SimiliarTreeTest.test(intTree.root, charTree.root);

System.out.println(“intTree and charTree are similiar with each other?”+b);

}

}

(注明:其中BST为二叉查找树)

判断两棵二叉树是否相似 (用c++完成) 要能运行的 谢谢

bool IsSimilar(const BiTree T1, const BiTree T2)

{

if (!T1 !T2)//如果都是空树,则相似

{

return true;

}

else if (!T1 || !T2)//如果一者是空树,另一者不为空树,则不相似

{

return false;

}

else//否则是否相似还需进一步判断

{

if (IsSimilar(T1-Lchild, T2-Lchild) IsSimilar(T1-Rchild, T2-Rchild))//此时判断左右子树是否都相似

{

return true;//如果是,则二叉树相似

}

else

{

return false;//否则不相似

}

}

}二叉树的存储类型是严奶奶的数据结构教的,所以自己把结构补全就可以运行了。

另外有人还比较了数据域的信息,相似只是结构上相同,或者说同构,不需要数据域相同,否则就是全等了。

还有,注意下面这种算法是错误的:

bool IsSimilar(const BiTree T1, const BiTree T2)

{

if (!T1 !T2)//如果都是空树,则相似

{

return true;

}

else if (!T1 || !T2)//如果一者是空树,另一者不为空树,则不相似

{

return false;

}

else//否则是否相似还需进一步判断

{

return IsSimilar(T1-Lchild, T2-Lchild);

return IsSimilar(T1-Rchild, T2-Rchild);

}

}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/194539.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-02 14:39
下一篇 2024-12-02 14:39

相关推荐

  • 利用Python实现两个链表合并为一个有序链表

    对于开发工程师来说,实现两个链表合并为一个有序链表是必须掌握的技能之一。Python语言在链表处理上非常便利,本文将从多个方面详细阐述如何利用Python实现两个链表合并为一个有序…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python定义两个列表的多面探索

    Python是一种强大的编程语言,开放源代码,易于学习和使用。通过Python语言,我们可以定义各种数据类型,如列表(list)。在Python中,列表(list)在处理数据方面起…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28
  • Python语言实现人名最多数统计

    本文将从几个方面详细介绍Python语言实现人名最多数统计的方法和应用。 一、Python实现人名最多数统计的基础 1、首先,我们需要了解Python语言的一些基础知识,如列表、字…

    编程 2025-04-28

发表回复

登录后才能评论