比较两棵可旋转二叉树是否相等
2015-10-08 13:07
211 查看
二叉树左右子结点可旋转是指:可以把二叉树的左结点旋转成为右子树,把右子树的结点旋转成为左子树。这个与判断两棵二叉树的逻辑相同,只是要交叉判断。
算法思路:在文章http://www.cnblogs.com/houjun/p/4860680.html的基础上,把判断代码改成如下:
完整算法为:
算法思路:在文章http://www.cnblogs.com/houjun/p/4860680.html的基础上,把判断代码改成如下:
if(T1->data == T2->data) //如果根节点相等 return (isEqual(T1->lc,T2->lc) && isEqual(T1->rc,T2->rc)) ||(isEqual(T1->lc,T2->rc) && isEqual(T1->rc,T2->lc));
完整算法为:
//二叉树节点结构体 struct BinaryNode { int data; BinaryNode * lc; BinaryNode * rc; }*BTree; //判断二叉树是否相等的函数 bool isEqual(BTree T1,BTree T2) { if(T1 == NULL && T2 == NULL) return true;//都为空,相等。 if(!T1||!T2) //由于上面的判断不成立,则T1,T2至少有一个不为空 return false;//一个空,一个不空,不相等 if(T1->data == T2->data) //如果根节点相等 return (isEqual(T1->lc,T2->lc) && isEqual(T1->rc,T2->rc))//判断左右子树是否都相等 ||(isEqual(T1->lc,T2->rc) && isEqual(T1->rc,T2->lc)); else return false; }
相关文章推荐
- 转一篇GCC相关的文章
- 小黑升级SSD实录
- Spring并发访问的线程安全性问题(高度总结)
- Oracle统一访问代理层方案
- nyoj 苹果 289 (简单01背包)
- Oracle统一访问代理层方案
- 词法分析
- 程序员,你需要些“脑力运动”了
- (转)Spring并发访问的线程安全性问题(高度总结)
- Failed while installingDynamic Web Module 3.0
- 写让别人能读懂的代码
- 点击回退键时出现连续返回的情况
- remote desktop connection manager的配置示例
- flatmap详解
- list列表获取当前行数据【WeX5】
- UC应用中心数据 HTML5应用添加近亿次
- iOS开发之邮件发送代码
- 深入浅出谈计算机语言的发展
- 代理反向传值
- C++中引用和指针的区别