请实现两棵树是否相等的比较,相等返回1,否则返回其他值,并说明算法复杂度。

数据结构为:
typedef struct_TreeNode{
char c;
TreeNode *leftchild;
TreeNode *rightchild;
}TreeNode;
函数接口为:int CompTree(TreeNode* tree1,TreeNode* tree2);
注:A、B两棵树相等当且仅当Root->c==RootB-->c,而且A和B的左右子树相等或者左右互换相等。

参考了此网址的内容

http://hi.baidu.com/mianshiti/blog/item/1070b78ce2ece2f1513d92e7.html

#include<iostream>
using namespace std;
typedef struct _TreeNode{
char c;
_TreeNode *leftchild;
_TreeNode *rightchild;
}TreeNode;
int CompTree(TreeNode* tree1,TreeNode* tree2){
if(tree1==NULL&&tree2==NULL)
return 1;
if(tree1==NULL||tree2==NULL)
return 0;
if(tree1->c!=tree2->c)
return 0;
return (
(CompTree(tree1->leftchild,tree2->leftchild)
&&CompTree(tree1->rightchild,tree2->rightchild))||
(CompTree(tree1->leftchild,tree2->rightchild)
&&CompTree(tree1->rightchild,tree2->leftchild)));
}
int main(){
TreeNode t1,t2,t3,t4,t5;
t1.c='f';
t2.c='a';
t3.c='v';
t4.c='o';
t5.c='r';
t1.leftchild=&t2;
t1.rightchild=&t3;
t2.leftchild=NULL;
t2.rightchild=&t4;
t3.leftchild=&t5;
t3.rightchild=NULL;
t4.rightchild=NULL;
t4.leftchild=NULL;
t5.rightchild=NULL;
t5.leftchild=NULL;
TreeNode n1,n2,n3,n4,n5;
n1.c='f';
n2.c='a';
n3.c='v';
n4.c='o';
n5.c='r';
n1.leftchild=&n3;
n1.rightchild=&n2;
n2.leftchild=NULL;
n2.rightchild=&n4;
n3.leftchild=&n5;
n3.rightchild=NULL;
n4.rightchild=NULL;
n4.leftchild=NULL;
n5.rightchild=NULL;
n5.leftchild=NULL;
if(CompTree(&t1,&n1))
cout<<"equal"<<endl;
else
cout<<"different"<<endl;
int i;cin>>i;
return 0;
}

百度面试题:判断两棵树是否相等相关推荐

  1. 递归判断两棵树是否相同

    递归写法判断两棵树是否相同: bool flag = true; // 默认认为两棵树是相同的,递归判断过程中改变flag值,一旦有一个不同,就跳出 void judge(node* root1, n ...

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

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

  3. LeetCode——Same Tree(判断两棵树是否相同)

    问题: Given two binary trees, write a function to check if they are equal or not. Two binary trees are ...

  4. 数据结构面试题/判断一棵树是否是完全二叉树

    二叉树: 1.满二叉树:在一棵二叉树中,如果所有分支节点都存在左子树和右子树,并且所有叶子节点都在同一层上. 2.完全二叉树:如果一棵具有N个结点的二叉树的结构与满二叉树的前N个结点的结构相同,称为完 ...

  5. 代码实现判断两棵树是否相等

    //两棵树是否相等 bool compare(const Node *root1,const Node *root2){if (root1==NULL&&root2==NULL){re ...

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

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

  7. python【数据结构与算法】判断两棵树是否相等

    # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # sel ...

  8. 判断两个树是否相同判断一棵树是否是一棵树的子树

    判断两棵树是否相同 方法:对两棵树同时做相同的递归判断其值或者是结构是否相同. 以下代码用的是前序遍历.递归方法(毕竟递归好理解而且代码少得可怜). 比较啰嗦的是指针为空的情况,只要把这些情况单独列出 ...

  9. 判断一棵树是否是另一棵树的子树(Java实现)

    前面一篇文章介绍了如何判断两棵树相等,思路就是遍历每个节点,然后判断是否均相等,需要用递归来实现.如果需要判断一棵树是另一棵树的子树,该怎么办呢?我们需要借助前面的思路,需要先判断两棵树相等,这里就是 ...

最新文章

  1. [Effective C++ --029]为“异常安全”而努力是值得的
  2. 争时金融java_Java高并发编程基础之AQS
  3. [SpringBoot2]web场景_静态资源规则与定制化
  4. leetcode 1442. 形成两个异或相等数组的三元组数目(位运算)
  5. 【Python】这些Python骚操作,你值得拥有
  6. MySQL8增量备份1008无标题_mysql增量备份
  7. 从“鸡兔同笼”到问题的奇思妙解
  8. 面向过程与面向对象代码实例对比
  9. mysql的txid是什么_mysql-存储引擎
  10. java金蝶云单据查询_如果在单据上查或下查的“单据关联”界面添加功能
  11. 磁碟机病毒(Dummycom)专杀工具
  12. 可视化实验四:大数据可视化工具—ECharts(二)
  13. 烟台移动dns网关_如何设置移动宽带DNS和IP地址
  14. 科研写作——常见句式(九)
  15. x86 x64 x86_64 AMD64 区别
  16. 没想到 Python 中竟然还藏着这些稀奇古怪的东西...
  17. 元气骑士如何获得机器人成就皮肤_《元气骑士》听过浮游炮大礼包吗?有利于快速获取机器人的皮肤!...
  18. 数据库 | VirusCircBase:环状 RNA病毒数据库
  19. 技术丨说一说微信第三方平台的初步集成
  20. python3环境配置教程_Python3 环境搭建

热门文章

  1. 判断过拟合 深度学习_深度学习—过拟合问题
  2. 中国少儿编程教育行业投资趋势与前景规划建议报告2022年版
  3. 你真的了解闰年吗? (附区分 闰年平年的程序示例)
  4. 英特尔显卡linux管理_英特尔二号人物被解雇:7nm全面落后,芯片还要外包代工...
  5. 【项目】健康项目day7总结
  6. 颜值10分姐姐带我玩转java设计模式(内附照片)- 状态模式
  7. (珍藏版)55 个细节帮你做好Java的 性能优化
  8. Linux系统—第16章—文件服务。
  9. SecureCRT8.1安装及使用过程
  10. 智能合约的编译与ABI