目錄
一、樹的邏輯結構
二、雙親表示法(順序存儲)
雙親表示法:每個結點中保存指向雙親的“指針”
#define MAX_TREE_SIZE 100
typedef struct{
ElemType data;
int parent;
}PTNode;
typedef struct{
PTNode nodes[MAX_TREE_SIZE];
int n;
}PTree;
1.新增數據元素
2.刪除數據元素
方案1:
方案2:
typedef struct{
PTNode nodes[MAX_TREE_SIZE];
int n;
}PTree;
3.優缺點
三、回顧:二叉樹的順序存儲
四、孩子表示法(順序+鏈式存儲)
孩子表示法:順序存儲各個節點,每個結點中保存孩子鏈表頭指針
struct CTNode{
int child; //孩子結點在數組中的位置
struct CTNode *next //下一個孩子
};
typedef struct{
ElemType data;
strcut CTNode *firstChild; //第一個孩子
}CTBox;
typedef struct{
CTBox nodes[MAX_TREE_SIZE];
int n,r; //結點數和根的位置
}CTree;
五、孩子兄弟表示法(鏈式存儲)
//數的存儲——孩子兄弟表示法
typedef struct CSNode{
ElemType data; //數據域
struct CSNode *firstchild,*nextsibling; //第一個孩子和右兄弟指針
}CSNode,*CSTree;
1.樹和二叉樹的轉化
六、森林和二叉樹的轉換
本質:用二叉鏈表存儲森林
七、總結