函数接口定义:
bool Isomorphism(BiTree T1,BiTree T2);
裁判测试程序样例:
#include<iostream>
#include<string.h>
#define N 100;
using namespace std;
typedef struct BiNode{
char data;
struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T,char a[],int &i){
char ch;
ch=a[i++];
if(ch=='#') T=NULL;
else{
T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild,a,i);
CreateBiTree(T->rchild,a,i);
}
}
bool Isomorphism(BiTree T1,BiTree T2);
int main(){
BiTree T1,T2;
int i=0,j=0;
char a[N];
char b[N];
cin>>a>>b;
CreateBiTree(T1,a,i);
CreateBiTree(T2,b,j);
cout<<Isomorphism(T1,T2);
return 0;
}
/* 请在这里填写答案 */
输入样例:
输入两行字符序列先序递归构建两棵二叉树。每个字符对应一个树节点,#表示空格。
ABD#E###CF##G##
HIJ#K###LM##N##
输出样例:
同构输入1,否则输入0.
1
bool Isomorphism(BiTree T1,BiTree T2){
if(T1!=NULL&&T2==NULL)return 0;
if(T1==NULL&&T2!=NULL)return 0;
// if(T1==NULL||T2==NULL)return 0;
// if(T1!=NULL&&T2!=NULL)return 1;
if(T1==NULL&&T2==NULL)return 1;
//if(T1->data==T2->data)
if(T1!=NULL&&T2!=NULL)
return Isomorphism(T1->lchild,T2->lchild)&& Isomorphism(T1->rchild,T2->rchild);
else return 0;