比较两个二叉树是否相同
2016-03-05 15:56
351 查看
转载于http://www.linuxidc.com/Linux/2015-01/111643.htm
1、二叉树定义
2、递归方式比较两个二叉树结构是否相同,不涉及存储的数据
如果两个二叉树pRoot都为空树,则自然相同,返回true;
如果两个二叉树pRoot一个为空树,另一个不为空树,则不相同,返回false;
如果两个二叉树都不为空树,则需要分别比较左右子树后,根据比较结果共同判定,只要有一个为false,则返回false。
1、二叉树定义
typedef struct BTreeNodeElement_t_ { void *data; } BTreeNodeElement_t; typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struct BTreeNode_t_ *m_pRight; } BTreeNode_t;
2、递归方式比较两个二叉树结构是否相同,不涉及存储的数据
如果两个二叉树pRoot都为空树,则自然相同,返回true;
如果两个二叉树pRoot一个为空树,另一个不为空树,则不相同,返回false;
如果两个二叉树都不为空树,则需要分别比较左右子树后,根据比较结果共同判定,只要有一个为false,则返回false。
bool BTreeCompare( BTreeNode_t *pRoot1, BTreeNode_t *pRoot2) { //如果都为空树,则相同 if( pRoot1 == NULL && pRoot2 == NULL ) return true; //如果一个为空,一个不为空,则不相同 if( ( pRoot1 != NULL && pRoot2 == NULL ) || ( pRoot1 == NULL && pRoot2 != NULL ) ) return false; //如果都不为空,则 需要比较左右子树后,再根据比较结果断定 bool leftCmp = BTreeCompare( pRoot1->m_pLeft, pRoot2->m_pLeft); bool rightCmp = BTreeCompare( pRoot1->m_pRight, pRoot2->m_pRight); return ( leftCmp && rightCmp ); }
相关文章推荐
- jQuery无刷新上传之uploadify简单试用
- ViewController跳转的三种方式的混合使用
- 添加tomcat的相关类
- tp3.2不能自动加载公共配置文件config.php
- eclipse中的配详解置文件
- Java设计模式之建造者模式
- Hadoop集群安装配置
- 传输速率与吞吐量
- 夺命雷公狗---TP商城----TP之样式和特效以及图片引入---2
- [c#.Net]正则表达式 记录
- py替换掉换行符
- 蓝屏dump分析教程
- Java之矩阵求特征值
- Nginx 详解(一)
- c语言:输入10个数,输出值最大的元素和该数是第几个数。(数组元素作函数实参)
- Input常用的几个函数
- 人工智能学习笔记(一):简述人工智能的应用领域
- 第二周项目三 小试循环
- self表示的是当前类开辟内存的对象(文档里写的是当前的消息接受者 Return Value: The receiver.)
- Windows环境下PHP开发环境搭建 - 图文完全教程