PTA 5 3 樹的同構 理解遞迴

2022-08-22 07:24:11 字數 965 閱讀 2562

難點:>>遞迴函式的實現

int isomorphic(tree r1,tree r2)

1.由於首先在一行中給出乙個非負整數n,考慮到n=0時root=-1;

即表示根節點找不到,注意root!=0的原因是題目預設從0開始作為下標

2.該函式傳入的引數可能為null的原因:其一,當n=0時,根節點為null;其二,遞迴過程可能會出現t1[r1].right為null或t2[r2].right為null的情況;

3.當tree r1=-1時,則該結點無意義,不能訪問t1[r1].element;

4.注意引數順序:tree r1延伸的結點必須在左邊,tree r2的必須在右邊,應為遞迴中始終是t1[r1],t2[r2];

5.注意分支語句的寫法

左分支相等有兩種情況:一,都為null;二,都不為null,且值相等

請他情況則考慮交叉相等

第五點的前提是,前面有對兩個都為null,其一為null,兩者都不為null的討論

#include#define maxtree 11

#define elementtype char

#define tree int

#define null -1

struct

treenode

t1[maxtree],t2[maxtree];

tree buildtree(

struct

treenode t)

else

t[i].left=null;

if(cr!='-'

)

else

t[i].right=null;}}

for(i=0;i)

if(!check[i])

returni;}

intisomorphic(tree r1,tree r2)

intmain()

PTA 樹的同構

給定兩棵樹t1和t2。如果t1可以通過若干次左右孩子互換就變成t2,則我們稱兩棵樹是 同構 的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點a b g的左右孩子互換後,就得到另外一棵樹。而圖2就不是同構的。圖1現給定兩棵樹,請你判斷它們是否是同構的。輸入給出2棵二叉樹樹的資訊。對於每棵...

PTA樹的同構

include define maxtree 10 define elementtype char define tree int define null 1 struct treenode t1 maxtree t2 maxtree 定義陣列型別的資料 tree buildtree struct ...

PTA 樹的同構

cpp include define maxtree 11 define elementtype char define tree int define null 1 struct treenode t1 maxtree t2 maxtree tree buildtree struct treeno...