- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数
据
结
构
课
程
实
验
报
告
班级:计嵌141
姓名:陈志远
学号:1413052023
二叉树相似问题
?问题描述?
两颗二叉树相似,指要么他们都为空或都只有一个根结点,要么它们的左右子树均相似,本问题是:设计一个算法,判断两颗二叉树是否相似。??
2.?基本要求?
(1)?设计二叉树的存储结构和建立算法。
?(2)?设计二叉树相似的判断算法。
?(3)?输入:两颗二叉树。
? (4)?输出:判定结果,相似或不相似。?
实现提示
(1)存储设计
Class?BinTreeNode
{??
char?data;? ?
BinTreeNode?*?Lchild;??
BinTreeNode?*?Rchild;?
BinTreeNode?*?Parent;?};?
算法设计
代码设计
#includeiostream?
using?namespace?std;?
static?int?count=1;?
struct?node?
{??
char?data;??
node?*lchild;?
node?*rchild;?
};?
class?Bitree?
{?
public:?
node?*root;?
Bitree()?
{?
root=NULL;?
}?
void?CreatBitree();?
void?PretraBitree();?
}
?
static?void?Create(node*p,int?k)?
{?
//创建二叉树
node?*q;??
char?x;?
cinx;?
if(x!=#)?
{?
q=new?node;?
q-data=x;?
if(k==1)?
p-lchild=q;?
if(k==2)??
p-rchild=q;?
Create(q,1);
Create(q,2);?
}?
?else
{??
q=new?node;?
q-data=x;?
q-lchild=NULL;?
q-rchild=NULL;??
if(k==1)??
p-lchild=q;??
if(k==2)?
p-rchild=q;?
?}?
}?
void?Bitree::CreatBitree()?
{?
node?*p;?
char?x;?
cinx;?
if(x==#)?
{?
p=new?node;?
p-data=x;?
p-lchild=NULL;?
p-rchild=NULL;}?
else?
{?
?p=new?node;?
?p-data=x;?
root=p;?
Create(p,1);?
Create(p,2);?
}?
}?
static?void?pretraverse(node?*p)?
{?
//遍历二叉树
if(p!=NULL)?
{?
pretraverse(p-lchild);
pretraverse(p-rchild);?
}?
}
void?Bitree::PretraBitree()?
{?
node?*p;?
p=root;?
pretraverse(p);?
coutendl;?
}?
static?void?like(node?*a,node?*b)?
{?
if(a!=NULLb!=NULL)?
{?
?if((a-data==#b-data!=#)||(a-data!=#b-data==#))?
count=0;?
like(a-lchild,b-lchild);?
like(a-rchild,b-rchild);?
}?
}?
void?work()?
{?
Bitree?a;?
Bitree?b;?
cout输入二叉树A(#为虚结点):endl;?
a.CreatBitree();?//创建二叉树A??
a.PretraBitree();//?先序遍历二叉树A
cout输入二叉树B(#为虚结点):endl;?
b.CreatBitree();?//创建二叉树B?
b.PretraBitree();//?先序遍历二叉树B?
like(a.root,b.root);?//判断AB是否相似
?cout判断结果:;?
?if(count==1)?
?
coutA与B相似endl;?
else?coutA与B不相似endl;?
}?
int?main()?
{?
work();?
return?0;?
}
5.?运行结果?
输入二叉树A:ab#c#?#d##?
输入二叉树B:as#d#?#f##?
判断结果:A与B相似??
输入二叉树A:ab#c#?#d##?
输入二叉树B:a##sd#?#f##?
判断结果:A与B不相似
原创力文档


文档评论(0)