樹的儲存結構 雙親表示法 孩子表示法 孩子兄弟法

2021-10-02 13:52:02 字數 1807 閱讀 8206

實現:定義結構陣列存放樹的結點,每個結點包含兩個域:

結點結構:

結點型別定義:

typedef

struct ptnode

ptnode;

另外,用r儲存根結點的下標,用n表示結點個數

樹的雙親表示法示例:

樹結構型別定義:

#define max_tree_size 100

typedef

struct

ptree;

特點:找雙親容易,找孩子難實現:把每個結點的孩子結點排列起來,看成是乙個線性表,用單鏈表作儲存,則 n 個結點有 n 個孩子鍊錶(葉子的孩子鍊錶為空表)。而 n 個頭指標又組成乙個線性表,用順序表(含 n 個元素的結構陣列)儲存。

孩子結點結構:

孩子結點型別定義:

typedef

struct ctnode

*childptr;

雙親結點結構:雙親結點型別定義:

typedef

struct

ctbox;

樹的孩子表示法示例:

樹結構型別定義:

typedef

struct

ctree;

特點:找孩子容易,找雙親難這個特點與雙親表示法相反,我們可以把雙親表示法和孩子表示法結合起來,這樣,找孩子容易,找雙親也容易

只需要增加乙個成員,就是增加雙親結點的下標

結點結構:

樹的二叉鍊錶表示法示例:

樹結構型別定義:

typedef

struct csnode

csnode,

*cstree;

特點:便於實現樹的各種操作,如容易找結點孩子若要訪問結點 x 的第 i 個孩子,則只要先從 fistchild 域找到第乙個孩子結點,然後沿著孩子結點的 nextsibling 域連續走 i-1 步,便可以找到 x 的第 i 個孩子。當然,如果為每個結點增設乙個 parent 域,則同樣能方便地實現查詢雙親的操作

借鑑:《資料結構》嚴蔚敏 青島大學–王卓

樹的雙親孩子表示法

完成了圖的鄰接表表示法,發現它的儲存結構與樹的孩子鍊錶表示法相似,都是由乙個陣列加若干鄰接鍊錶形成的結構。只是在構造和遍歷時有所區別。在孩子鍊錶中查詢兄弟結點比較困難,查詢孩子和雙親很方便,故適用於對孩子操作較多的應用。結構圖示為 下面是c語言 實現 include include define m...

樹的雙親表示法,孩子表示法以及孩子兄弟表示法

目錄如下圖所示,這是一棵普通的樹,該如何儲存呢?通常,儲存具有普通樹結構資料的方法有 3 種 雙親表示法 孩子表示法 孩子兄弟表示法 圖1雙親表示法採用順序表 也就是陣列 儲存普通樹,其實現的核心思想是 順序儲存各個節點的同時,給各節點附加乙個記錄其父節點位置的變數。注意,根節點沒有父節點 父節點又...

樹的孩子雙親表示法

新增鏈結描述 按照上述部落格,測試了一下這個程式.有兩點說說明一下.首先,博主說使用c語言,我第一次用.c檔案編譯,出現error expected or before token 這是使用了引用 而在c語言中沒有引用的概念,在c語言中是取位址符號.後期改為.cpp檔案即可執行 第二點就是 fflu...