資料結構與演算法之樹

2021-09-25 12:28:42 字數 1846 閱讀 3183

:元素之間儲存一對多關係的資料結構,常用於表現族譜關係、組織關係等,也可以借助特殊的樹型結構實現查詢、排序等演算法,一般使用倒懸樹的方式表示。

樹的相關術語:

根結點:樹的最上層元素,有且只能有乙個。

子結點:該結點的對應下一層元素。

父結點:該結點的對應上一層元素。

葉子結點:沒有子結點的元素,一般處於樹的最底層。

兄弟結點:具有同乙個父結點的元素,處在同一層。

高度:指的是樹的層數。

密度:指的是樹的結點數(包括根結點)。

:指的是結點的子結點數量。

普通樹:

子結點的數量沒有限制。

順序儲存:

1、每個結點一行

下標 資料 父結點下標

0 r -1

1 a 0

2 b 0

3 c 0

4 d 1

5 e 1

6 f 2

7 g 2

8 h 2

9 i 3

10 j 3

11 k 5

12 l 7

2、兄弟結點連續儲存

下標 資料 父結點下標 第乙個子結點下標

0 r -1 1

1 a 0 4

2 b 0 6

3 c 0 9

4 d 1 -1

5 e 1 11

6 f 2 -1

7 g 2 12

8 h 2 -1

9 i 3 -1

10 j 3 -1

11 k 5 -1

12 l 7 -1

3、兄弟結點連續儲存

下標 資料 父結點下標 第乙個子結點 最後乙個子結點

0 r -1 1 3

1 a 0 4 5

2 b 0 6 8

3 c 0 9 10

4 d 1 -1 -1

5 e 1 11 11

6 f 2 -1 -1

7 g 2 12 12

8 h 2 -1 -1

9 i 3 -1 -1

10 j 3 -1 -1

11 k 5 -1 -1

12 l 7 -1 -1

鏈式序儲存:

typedef struct node

node;

二叉樹:子結點的數量多為2。

相關術語:

前序遍歷:根,左,右

中序遍歷:左,根,右

後序遍歷:左,右,根

層序遍歷:從上到下,先左後右

幾種較為常見的樹

普通二叉樹:對二叉樹的結沒有位置及數量上的要求。

滿二叉樹:樹的每一層的結點數量都 pow(2,層數-1)

完全二叉樹:除了最後一層,其它每一層的結點數量都是 pow(2,層數-1),最後層的結點按照從左往的順序儲存。

有序二叉樹:所有的左子結點都小於根結點,所有右子結點都大於根結點。

平衡二叉樹:首先是有序的二叉樹,樹的左右子樹的高度相差不超過1,並且子樹的子樹都滿足這個要求。

資料結構與演算法之樹(一)

樹是一些節點的集合。這些集合可以是空集,如果不是空集,那麼樹則由稱作根的節點r以及0個或多個非空的樹t1 t2.tk組成。如圖沒有兒子的節點稱為樹葉 具有相同父親的節點稱為兄弟 深度 對於任意的節點n i,從根到n i的唯一路徑的長。高 從ni到一片樹葉的最長路徑的長。遍歷 先序遍歷 若樹為空則返回...

資料結構與演算法之樹簡介

1.示例樹的圖示 2.樹的定義與結構特點 1.樹的定義 由乙個或者多個 n 0 節點組成的有限集合t,有且僅有乙個節點稱為根 root 當n 1的時候,其餘的節點分為m m 0 個互不相交的有限集合t1,t2,tm.每個集合本身又是棵樹,被稱作這顆樹的子樹.由此可以看出樹具有遞迴性,大樹裡面有小樹 ...

資料結構與演算法之2 3 4樹

外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img y3sprlm2 1615947159678 不太平衡的二叉樹 對於乙個普通的二叉查詢樹,我們可以發現乙個問題,存在一定的可能性,一般的二叉查詢樹會退化成一般的鍊錶.上圖還沒有完全退化,但是如果查詢6這個結點,會比其他的葉子結點走更...