日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

树的存储结构以及实现代码

發(fā)布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树的存储结构以及实现代码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
樹的存儲結(jié)構(gòu)以及實現(xiàn)代碼

?

1、首先假設(shè)有一個樹如下:

?

?

?

?

?

?

?

2、雙親表示法

  我們假設(shè)以一組連續(xù)空間存儲樹的結(jié)點,在每個結(jié)點中,附設(shè)一個指示器指示其雙親結(jié)點到鏈表中的位置。這樣,每個結(jié)點除了知道自己是誰以外,還知道他們的雙親在那里。

  如下圖所示:

data?parent

?

  由于這種存儲結(jié)構(gòu)不能有效的尋找其兄弟結(jié)點,我們隊這種存儲解雇進(jìn)行修改,插入其第一個第一個孩子firstchild的下標(biāo),rightsibling(-1表示沒有)的下標(biāo),變成

下標(biāo)dataparentfirstchildrightsibling
0A-1-1-1
1B032
2C04-1
3D16-1
4E295
5F2-1-1
6G3-17
7H3-18
8I3-1-1
9J4-1-1

代碼如下:

//雙親表示法 #define MAX_TREE_NUM 100 //定義樹的最大結(jié)點數(shù)目 typedef char ElemType; //定義結(jié)點中的數(shù)據(jù)類型 typedef struct PTNode {int parent; //每個結(jié)點的雙親所在位置的下標(biāo)ElemType data; //每個結(jié)點中存放的數(shù)據(jù)int firstchild; //從左邊開始數(shù),這個結(jié)點第一個孩子的位置(下標(biāo))int rightsibling; //從左邊開始數(shù),這個結(jié)點右邊的那個兄弟的下標(biāo) }PTNode; typedef struct PTree {PTNode data[MAX_TREE_NUM]; //樹的結(jié)點數(shù)組int r; //根節(jié)點的位置(下標(biāo))int n; //當(dāng)前樹中結(jié)點數(shù)目 }PTree;

  

3、孩子雙親表示法

  

?

?

?

?

?

?

?

?

代碼如下:

typedef struct CNode //定義孩子結(jié)點,以鏈表的形式存儲孩子和孩子的下標(biāo) {int child; //孩子的下標(biāo)CNode *next; //如果存在不止一個孩子,則next用來存放指向下一個孩子的指針,否則為空 }CNode; typedef struct PNode //定義雙親結(jié)點 {int parent; //雙親結(jié)點的下標(biāo)struct CNode *firstchild; //指向第一個孩子結(jié)點的指針ElemType data; //雙親結(jié)點中存放的數(shù)據(jù) }PNode;typedef struct PCTree //定義一個雙親-孩子存儲結(jié)構(gòu)表示的樹結(jié)構(gòu) {struct PNode nodes[MAX_TREE_NUM]; //定義一個含有MAX_TREE_NUM個結(jié)點的樹int c; //根結(jié)點int n; //當(dāng)前樹中結(jié)點數(shù)目 }

  

4、孩子兄弟表示法

?

?

?

?

?

?

?

?

?

代碼如下:

//孩子兄弟表示法 typedef struct PNode //定義一個孩子-兄弟存儲結(jié)構(gòu)表示樹 {ElemType data; //結(jié)點中存放的數(shù)據(jù)PNode *firstchild; //指向從左邊起,第一個孩子結(jié)點,沒有孩子的結(jié)點指向NULLPNode *rightsibling; //指向第一個孩子的右邊的一個兄弟結(jié)點的指針,如果含有多個兄弟結(jié)點,依次指過去(類似單鏈表)}PNode;

  

?

posted on 2014-12-17 15:50 BeatificDevin 閱讀(...) 評論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/devinblog/p/4169593.html

總結(jié)

以上是生活随笔為你收集整理的树的存储结构以及实现代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。