數據結構筆記——樹存儲結構

目錄

一、樹的邏輯結構

二、雙親表示法(順序存儲)

三、回顧:二叉樹的順序存儲

四、孩子表示法(順序+鏈式存儲)

五、孩子兄弟表示法(鏈式存儲)

六、森林和二叉樹的轉換

七、總結

一、樹的邏輯結構

二、雙親表示法(順序存儲)

雙親表示法:每個結點中保存指向雙親的“指針”

#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.樹和二叉樹的轉化

六、森林和二叉樹的轉換

本質:用二叉鏈表存儲森林

七、總結

 

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