實現:定義結構陣列存放樹的結點,每個結點包含兩個域:
結點結構:
結點型別定義:
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...