資料結構 樹

2021-09-25 20:23:18 字數 1126 閱讀 5621

樹是一種元素之間存在一對多關係的資料結構,常用於表示組織結構、輔助排序、查詢等,

一般以倒懸樹的形式 :根在上支在下

樹的相關術語:

根:樹的最頂層的元素,有且僅有乙個

雙親:指的是元素的上一層元素

孩子:指的是元素的下一層元素

度:孩子的數量

深度:樹的層數

密度:樹的元素個數

結點:乙個元素就是乙個結點

普通樹:孩子個數不確定 //基本不考

普通樹的順序儲存:

1、對節點的儲存沒有要求

2、從上到下、從左到右儲存

0 a -1

1 b -1

2 c 4

3 d -1

4 e -1

5 f -1

6 g -1

3、從上到下、從左到右儲存

0 a -1 -1 3

1 b 0 -1 -1

2 c 0 4 6

3 d 0 -1 -1

4 e 2 -1 -1

5 f 2 -1 -1

6 g 2 -1 -1

普通樹的鏈式儲存:

typedef struct node

二叉樹:最多只有2個孩子

2^(k-1)

i i*2+1左孩子 i*2+2右孩子

普通二叉樹:結點隨意放

完全二叉樹:對於深度為k的,有n個結點的二叉樹,當且僅當其每乙個結點都與深度為k的滿二叉樹中編號從1至n的結點一一對應時稱之為完全二叉樹。

滿二叉樹:除最後一層無任何結點外其餘都有2個節點。

有序二叉樹:左子樹的所有結點都比雙親小,右子樹的所有結點都比雙親大

平衡二叉樹:左右高度相差不超過1的有序二叉樹。

樹的順序儲存:採用完全二叉樹。

樹的遍歷又分為深度遍歷和廣度遍歷

深度遍歷就是前序遍歷、中序遍歷、後序遍歷

//前序遍歷

void _show(treenode* node)

//中序遍歷

void _show(treenode* node)

//後序

void _show(treenode* node)

廣度遍歷需要借助佇列來完成

資料結構 樹

樹的概念 1.家族樹 在現實生活中,有入如下血統關係的家族可用樹形圖表示 張源有三個孩子張明 張亮和張麗 張明有兩個孩子張林和張維 張亮有三個孩子張平 張華和張群 張平有兩個孩子張晶和張磊。以上表示很像一棵倒畫的樹。其中 樹根 是張源,樹的 分支點 是張明 張亮和張平,該家族的其餘成員均是 樹葉 而...

資料結構 樹

1 定義 樹是一種非線性結構,是一種一對多的資料結構。分析樹的結構,我們用遞迴的方法,根結點下面又可以看做是子樹。2 樹的儲存結構 我們一般用孩子兄弟法儲存。也就是把乙個結點的左邊第乙個孩子放在此結點的左邊孩子,把此結點的右兄弟放在此結點的右邊孩子。這樣就產生了二叉樹。二叉樹和樹可以相互對應。3 二...

資料結構 樹

二叉樹性質回顧 滿二叉樹 完全二叉樹等 給定一棵二叉樹,要求分層遍歷該二叉樹,即從上到下按層次訪問該樹,每一層單獨輸出一行,每一層要求訪問的順序為從左到右。我們在遍歷的過程中將該層節點的孩子節點壓入乙個佇列,這樣就可以實現從上到下一層一層地遍歷該二叉樹。層序遍歷 並分層列印 如果不用分層的話只用佇列...