數據結構與算法(12)--樹

##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; //孩子兄弟結點數據類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章