-->
当前位置:首页 > 题库 > 正文内容

程序填空题:判断两棵二叉树是否同构(递归法)

Luz4年前 (2021-05-10)题库2081
判断两棵二叉树是否同构(递归法)

```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)

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。