日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言判断两字符串同构,c语言实现判断两颗树是否同构

發(fā)布時間:2023/12/20 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言判断两字符串同构,c语言实现判断两颗树是否同构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在本題中認為如果兩個樹左右子樹交換可以相同,也被認為是同構(gòu)樹。

對應(yīng)輸入格式為:4(總結(jié)點數(shù))

A - 1

B 2 3

C - -

D - -

#include

#define Tree int

#define Null -1

#define MAXSIZE 10

struct Node{

char Element;

Tree Left;

Tree Right;

}T1[MAXSIZE], T2[MAXSIZE];

Tree BuildTree(struct Node T[])

{

int N, i, Root;

char ch, cl, cr;

scanf("%d", &N);

ch = getchar();

int Check[N];

for(i = 0; i < N; i++) Check[i] = 0;//為了標記根節(jié)點 ,因為沒有節(jié)點指向根節(jié)點

for(i = 0; i < N; i++){

scanf("%c %c %c", &T[i].Element, &cl, &cr);

ch = getchar();

if(cl != '-'){

T[i].Left = cl - '0';

Check[T[i].Left] = 1;

}

else

T[i].Left = Null;

if(cr != '-'){

T[i].Right = cr - '0';

Check[T[i].Right] = 1;

}

else

T[i].Right = Null;

}

for(i = 0; i < N; i++)//遍歷找到根節(jié)點

if(Check[i] == 0)

break;

Root = i;

return Root;

}

int Isomorphic(Tree R1, Tree R2)

{

//兩樹都為空

if(R1 == Null && R2 == Null)

return 1;

//空樹和非空樹

if((R1 == Null && R2 != Null) || (R1 != Null && R2 == Null))

return 0;

//兩樹的根節(jié)點不一樣

if(T1[R1].Element != T2[R2].Element)

return 0;

//若過兩樹的左子樹都空,判斷右子樹是否一樣

if(T1[R1].Left == Null && T2[R2].Left == Null)

return Isomorphic(T1[R1].Right, T2[R2].Right);

//若兩樹的左子樹不空,并且左子樹的結(jié)點元素都一樣,判斷左右子樹是否一樣

if((T1[R1].Left != Null && T2[R2].Left != Null) && (T1[T1[R1].Left].Element == T2[T2[R2].Left].Element))

return Isomorphic(T1[R1].Left, T2[R2].Left) && Isomorphic(T1[R1].Right, T2[R2].Right);

else

//否則 判斷兩樹是否同構(gòu)

return Isomorphic(T1[R1].Left, T2[R2].Right) && Isomorphic(T1[R1].Right, T2[R2].Left);

}

int main()

{

Tree R1, R2;

R1 = BuildTree(T1);

R2 = BuildTree(T2);

if(Isomorphic(R1, R2)) printf("Yes");

else

printf("No");

return 0;

}

總結(jié)

以上是生活随笔為你收集整理的C语言判断两字符串同构,c语言实现判断两颗树是否同构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。