程序填空题:判断两棵二叉树是否同构(递归法)
判断两棵二叉树是否同构(递归法)
```c++
#include
#include
#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){
if(@@[T1==NULL&&T2==NULL](2))
return true;
if(@@[(T1==NULL&&T2!=NULL)||(T1!=NULL&&T2==NULL)](2))
return false;
@@[bool lsm=Isomorphism(T1->lchild,T2->lchild)](2);
@@[bool rsm=Isomorphism(T1->rchild,T2->rchild)](2);
return lsm&&rsm;
}
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< return 0;
}
```
### 输入样例:
输入两行字符序列先序递归构建两棵二叉树。每个字符对应一个树节点,#表示空节点。
```in
ABD#E###CF##G##
HIJ#K###LM##N##
```
### 输出样例:
同构输入1,否则输入0。
```out
1
```
答案:
第1空:T1==NULL&&T2==NULL
第2空:(T1==NULL&&T2!=NULL)||(T1!=NULL&&T2==NULL)
第3空:bool lsm=Isomorphism(T1->lchild,T2->lchild)
第4空:bool rsm=Isomorphism(T1->rchild,T2->rchild)
```c++
#include
#include
#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){
if(@@[T1==NULL&&T2==NULL](2))
return true;
if(@@[(T1==NULL&&T2!=NULL)||(T1!=NULL&&T2==NULL)](2))
return false;
@@[bool lsm=Isomorphism(T1->lchild,T2->lchild)](2);
@@[bool rsm=Isomorphism(T1->rchild,T2->rchild)](2);
return lsm&&rsm;
}
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<
}
```
### 输入样例:
输入两行字符序列先序递归构建两棵二叉树。每个字符对应一个树节点,#表示空节点。
```in
ABD#E###CF##G##
HIJ#K###LM##N##
```
### 输出样例:
同构输入1,否则输入0。
```out
1
```
答案:
第1空:T1==NULL&&T2==NULL
第2空:(T1==NULL&&T2!=NULL)||(T1!=NULL&&T2==NULL)
第3空:bool lsm=Isomorphism(T1->lchild,T2->lchild)
第4空:bool rsm=Isomorphism(T1->rchild,T2->rchild)