這道題的演算法思想就是在建立好的二叉樹的基礎上,通過依次遍歷兩個二叉樹,比較兩個二叉樹的同一結點的左右孩子結點來確認它們是否同構。
**如下:
#include
#include
#include
int visited[100];
int num=0;
struct node
;struct node1
q[100];
struct node* creat(struct node* root,int n)//建立二叉樹
if(q[n].b!=-1)
return root;
}int judge(struct node* p,struct node* q)//判別二叉樹是否同構
else
return 0;
}else
return 0;
}int main()
if(s3[0]=='-')
q[i].b=-1;
else
}int flag;
struct node *root;
if(n!=0)
scanf("%d",&m);
memset(visited,0,sizeof(visited));
for(i=0; i
if(s3[0]=='-')
q[i].b=-1;
else
}int j;
for(j=0;j
if(!visited[j])
break;
struct node *root;
root=creat(root,j);
num=0;
judge(root,root);
if(num==n)
printf("yes\n");
else
printf("no\n");
}return 0;
}
資料結構實驗之二叉樹一 樹的同構
time limit 1000ms memory limit 65536k 有疑問?點這裡 給定兩棵樹t1和t2。如果t1可以通過若干次左右孩子互換就變成t2,則我們稱兩棵樹是 同構 的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點a b g的左右孩子互換後,就得到另外一棵樹。而圖2就...
資料結構實驗之二叉樹一 樹的同構
time limit 1000ms memory limit 65536k 給定兩棵樹t1和t2。如果t1可以通過若干次左右孩子互換就變成t2,則我們稱兩棵樹是 同構 的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點a b g的左右孩子互換後,就得到另外一棵樹。而圖2就不是同構的。圖1...
資料結構實驗之二叉樹一 樹的同構
time limit 1000ms memory limit 65536k 給定兩棵樹t1和t2。如果t1可以通過若干次左右孩子互換就變成t2,則我們稱兩棵樹是 同構 的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點a b g的左右孩子互換後,就得到另外一棵樹。而圖2就不是同構的。圖1...