百度面试题:判断两棵树是否相等
请实现两棵树是否相等的比较,相等返回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;
}
百度面试题:判断两棵树是否相等相关推荐
- 递归判断两棵树是否相同
递归写法判断两棵树是否相同: bool flag = true; // 默认认为两棵树是相同的,递归判断过程中改变flag值,一旦有一个不同,就跳出 void judge(node* root1, n ...
- 【数据结构】判断两棵树是否相等的算法
下面用先根遍历的思路描述算法的步骤: 若两棵二叉树都为空,则两棵二叉树相等,返回true; 若两棵二叉树都非空,则 若根结点的值相等,则继续判断它们的左子树是否相等: 若左子树相等,则再继续判断它们的 ...
- LeetCode——Same Tree(判断两棵树是否相同)
问题: Given two binary trees, write a function to check if they are equal or not. Two binary trees are ...
- 数据结构面试题/判断一棵树是否是完全二叉树
二叉树: 1.满二叉树:在一棵二叉树中,如果所有分支节点都存在左子树和右子树,并且所有叶子节点都在同一层上. 2.完全二叉树:如果一棵具有N个结点的二叉树的结构与满二叉树的前N个结点的结构相同,称为完 ...
- 代码实现判断两棵树是否相等
//两棵树是否相等 bool compare(const Node *root1,const Node *root2){if (root1==NULL&&root2==NULL){re ...
- 判断两棵树是否相等与使用二叉链表法建立二叉搜索树
//判断两个二叉树是否相等 //提问如果两个二叉树的前序遍历相等,能否说明,这两个树相等? //答案是否定的,只有这两个树的 A前序=B前序,A中序=B中序才可以. BOOL isEqualTree( ...
- python【数据结构与算法】判断两棵树是否相等
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # sel ...
- 判断两个树是否相同判断一棵树是否是一棵树的子树
判断两棵树是否相同 方法:对两棵树同时做相同的递归判断其值或者是结构是否相同. 以下代码用的是前序遍历.递归方法(毕竟递归好理解而且代码少得可怜). 比较啰嗦的是指针为空的情况,只要把这些情况单独列出 ...
- 判断一棵树是否是另一棵树的子树(Java实现)
前面一篇文章介绍了如何判断两棵树相等,思路就是遍历每个节点,然后判断是否均相等,需要用递归来实现.如果需要判断一棵树是另一棵树的子树,该怎么办呢?我们需要借助前面的思路,需要先判断两棵树相等,这里就是 ...
最新文章
- [Effective C++ --029]为“异常安全”而努力是值得的
- 争时金融java_Java高并发编程基础之AQS
- [SpringBoot2]web场景_静态资源规则与定制化
- leetcode 1442. 形成两个异或相等数组的三元组数目(位运算)
- 【Python】这些Python骚操作,你值得拥有
- MySQL8增量备份1008无标题_mysql增量备份
- 从“鸡兔同笼”到问题的奇思妙解
- 面向过程与面向对象代码实例对比
- mysql的txid是什么_mysql-存储引擎
- java金蝶云单据查询_如果在单据上查或下查的“单据关联”界面添加功能
- 磁碟机病毒(Dummycom)专杀工具
- 可视化实验四:大数据可视化工具—ECharts(二)
- 烟台移动dns网关_如何设置移动宽带DNS和IP地址
- 科研写作——常见句式(九)
- x86 x64 x86_64 AMD64 区别
- 没想到 Python 中竟然还藏着这些稀奇古怪的东西...
- 元气骑士如何获得机器人成就皮肤_《元气骑士》听过浮游炮大礼包吗?有利于快速获取机器人的皮肤!...
- 数据库 | VirusCircBase:环状 RNA病毒数据库
- 技术丨说一说微信第三方平台的初步集成
- python3环境配置教程_Python3 环境搭建