##define ElemType char
#define MaxSize 50
//雙親表示法
typedef struct TNode{
ElemType data;
int parent;
}TNode;
typedef struct{
TNode nodes[MaxSize]; //結點數組
int n; // 樹的雙親表示結構
};
//孩子表示法
/*
**把每個結點的孩子節點排列起來存儲成一個單鏈表。
**n個節點就有n個鏈表
**如果是葉子節點,那這個節點的孩子單鏈表就是空的
**然後n個單鏈表的頭指針又存儲在一個順序表(數組)中
*/
typedef struct CNode{
int child; //該孩子在表頭數組的下標
struct CNode *next; // 指向該結點的下一個孩子結點
}CNode,*Child;
typedef struct{
ElemType data; // 結點的數據域
Child firstchild; //指向該結點的第一個孩子的結點
}TNode;
//孩子兄弟表示法
/*
** 顧名思義就是要存儲孩子結點和兄弟結點,具體來說,
** 就是設置兩個指針,分別指向該結點的第一孩子結點和該結點的兄弟結點
*/
typedef struct CSNode{
ElemType data; //該結點的數據域
struct CSNode *firstchild,*rightsib; //指向該結點的第一個孩子結點和該結點的右兄弟結點
}CSNode; //孩子兄弟結點數據類型
數據結構與算法(12)--樹
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.