#include#define maxtree 100
#define elementtype char
#define tree int
//定義乙個樹的結構體,這裡採用乙個靜態鍊錶儲存
struct treenodet1[maxtree],t2[maxtree];
//建立樹的函式
int buildtree(struct treenode t)
//定義乙個測試陣列來判斷結點是否有雙親,初始值賦值為0
int test[n];
for(int i=0;ifor(int i=0;ielse
t[i].lefttree=-1; //左孩子為空則標記為-1
if(ch2!='-')
else
t[i].righttree=-1;
} for(int j=0;j}//判斷樹是否同構並輸出
int issame(int root1,int root2)
//非空但結點資料不相等則不同構
if(t1[root1].data!=t2[root2].data)
return 0;
//繼續遞迴比較左子樹和左子樹 ,右子樹和右子樹
if(issame(t1[root1].lefttree,t2[root2].lefttree)&&issame(t1[root1].righttree,t2[root2].righttree))
//遞迴比較a的左與b的右子樹
if(issame(t1[root1].righttree,t2[root2].lefttree)&&issame(t1[root1].lefttree,t2[root2].righttree))
return 0;//都不同構返回0;
} //主函式
int main()else
return 0;
}
遞迴法(非遞迴法)遍歷二叉樹
2.4 用 遞迴法 非遞迴法 實現先序遍歷 中序遍歷和後序遍歷函式,要求遍歷時能執行一定的操作,且該操作可由遍歷函式的呼叫者來設定。define tree type int typedef struct tree nodetreenode 先序遍歷與建立二叉樹 遞迴法 include tree.h ...
二叉樹的遍歷(遞迴法和非遞迴法)
所謂的二叉樹是指樹中所有節點的子節點個數都不超過2的樹。對於二叉樹,有深度遍歷和廣度遍歷,深度遍歷有前序 中序以及後序三種遍歷方法,廣度遍歷即我們平常所說的層次遍歷。前序遍歷首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。若二叉樹為...
二叉樹的同構
給定兩棵樹t1和t2。如果t1可以通過若干次左右孩子互換就變成t2,則我們稱兩棵樹是 同構 的。例如下圖給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點a b g的左右孩子互換後,就得到另外一棵樹。這幅圖中的兩棵樹就不是同構的 現給定兩棵樹,請你判斷它們是否是同構的。輸入給出2棵二叉樹樹的資訊。對...