思路:
结构相同就是左右子树结构都相同,不用考虑数据元素内容是否相同
三种情况:
(1)两棵树都空,返回真
(2)一棵空,一棵不空,假
(3)如果两棵树都非空,递归判断左右子树结构是否相同
代码:
bool isSameStructrue(BTNode *t,BTNode *p){
if(t==NULL&&p==NULL)//两棵树都空,结构相同,返回true
return true;
else if(t==NULL||p==NULL)//一棵树空,一棵树不空,结构不同,返回false
return false;
return isSameStructrue(t->lchild,p->lchild)&&isSameStructrue(t->rchild,p->rchild);
测试:
#include<stdio.h>
#include <stdlib.h>
#include<math.h> //数学函数,求平方根、三角函数、对数函数、指数函数...
#define MAXSIZE 100
//用于使用c++的输出语句
#include<iostream>
using namespace std;
typedef struct BTNode
{
char data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;
void createBiTree(BTNode* &T);
bool