數據結構筆記——二叉存儲結構

目錄

一、二叉樹的順序存儲

二、二叉樹的鏈式存儲

三、總結

一、二叉樹的順序存儲

#define MaxSize 100
struct TreeNode{
    ElemType value;    //結點中的數據元素
    bool isEmpty;    //結點是否爲空
};
TreeNode t[MaxSize];

定義一個長度爲MaxSize的數組t,按照從上至下、從左至右的順序依次存儲完全二叉樹中的各個結點

幾個重要常考的基本操作:

完全二叉樹中共有n個結點,則

不是完全二叉樹,依次按層序將各節點順序存儲,無法從結點編號反映出結點間的邏輯關係

二、二叉樹的鏈式存儲

typedef struct BiTNode{
    ElemType data;
    struct BiTNode *lchild,rchild;
}BiTNode,*BiTree;

n個結點的二叉鏈表共有n+1個空鏈域,可用於構造線索二叉樹

struct ElemType{
    int value;
};
typedef struct BiTNode{
    ElemType data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

//定義一棵空樹
BiTree root = NULL;

//插入根節點
root = (BiTree)malloc(sizeof(BiTNode));
root->data = {1};
root->lchild = NULL;
root->rchild = NULL;

//插入新結點
BiTNode *p = (BiTNode *)malloc(sizeof(BiTNode));
p->data = {2};
p->lchild = NULL;
p->rchild = NULL;
root->lchild = p; //作爲根節點的左孩子

思考:

如何找到指定結點p的父節點?

只能從根開始遍歷尋找

typedef struct BiTNode{
    ElemType data;
    struct BiTNode *lchild,*rchild;
    struct BiTNode *parent;  //父節點指針  三叉鏈表——方便找父節點
}BiTNode,*BiTree;

三、總結

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