用分治法判断两棵树是否相等

堕落的小科科 2009-10-17 10:28:54
急求,现在有思路但是不会写
...全文
239 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
phpjspasp 2009-10-27
  • 打赏
  • 举报
回复

bool compTree(Tree *t1, Tree *t2)
{
if(t1==NULL && t2==NULL) return true; //同时空
else if(t1==NULL && t2!=NULL) return false; //第一个空,第二个不空
else if(t1!=NULL && t2==NULL) return false; //第一个不空,第二个空
else if(t1->data != t2->data) return false; //都不空,但数倨不等
else return(compTree(t1->left, t2->left) && compTree(t1->right, t2->right))
//都不空,数据也相等,就比较它们的左右子树了。

}


不一定对。呵呵
堕落的小科科 2009-10-27
  • 打赏
  • 举报
回复
怎么了???
dripstone 2009-10-20
  • 打赏
  • 举报
回复
return (equal(left->left, left->right)&&equal(right->left, right->right));
???
pcboyxhy 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 liulei19890127 的回复:]
但是你的伪代码就写得有问题
[/Quote]

什么问题?
堕落的小科科 2009-10-19
  • 打赏
  • 举报
回复
对于一棵二叉树需要给什么呢,难道二叉树的定义有多种???
Michael_Xie 2009-10-19
  • 打赏
  • 举报
回复
树相等的定义都没有给出,怎么写程序?
有根有序树?
有根无序树?
自由树?
堕落的小科科 2009-10-18
  • 打赏
  • 举报
回复
你这个貌似写的有问题啊,第二个return就是错的
堕落的小科科 2009-10-18
  • 打赏
  • 举报
回复
但是你的伪代码就写得有问题
pcboyxhy 2009-10-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liulei19890127 的回复:]
你这个貌似写的有问题啊,第二个return就是错的
[/Quote]

这个只是伪代码,空指针检查等等还是要你自己做的
pcboyxhy 2009-10-17
  • 打赏
  • 举报
回复
bool equal(BTREE left, BTREE right)
{
if (left->value!=right->value)
return false;
return (equal(left->left, right->left)&&equal(left->right, right->right));
}
堕落的小科科 2009-10-17
  • 打赏
  • 举报
回复
但是就要用分治法写啊,关键不会写
堕落的小科科 2009-10-17
  • 打赏
  • 举报
回复
但是就要用分治法写啊,关键不会写
堕落的小科科 2009-10-17
  • 打赏
  • 举报
回复
但是就要用分治法写啊,关键不会写
pcboyxhy 2009-10-17
  • 打赏
  • 举报
回复
不用分治也可以的吧,3种遍历,先根,中根,后根,可以得出3种遍历序列
随便取两种遍历方式,例如先根和中根,把两棵树遍历出来的序列作对比,如果两种遍历序列都相等,树就相等

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧