資料結構筆記8 樹

2021-09-29 17:09:28 字數 1243 閱讀 5192

樹的定義

在樹中通常將資料元素成為結點。

樹:n(n≥0)個結點的有限集合。當n=0時,稱為空樹。     

任意一棵非空樹滿足以下條件:

①有且僅有乙個特定的稱為根的結點;

②當n>1時,除根結點之外的其餘結點被分成m(m>0)個互不相交的有限集合t1,t2,… ,tm,其中每個集合又是一棵樹,並稱為這個根結點的子樹。

樹的基本術語

結點的度:結點所擁有的子樹的個數。   

樹的度:樹中各結點度的最大值。

葉子結點:度為0的結點,也稱為終端結點。

分支結點:度不為0的結點,也稱為非終端結點。

孩子、雙親:樹中某結點子樹的根結點稱為這個結點的孩子結點,這個結點稱為它孩子結點的雙親結點;

兄弟:具有同乙個雙親的孩子結點互稱為兄弟。

路徑:如果樹的結點序列n1, n2, …, nk有如下關係:結點ni是ni+1的雙親(1<=i樹的遍歷操作 

樹的遍歷:從根結點出發,按照某種次序訪問樹中所有結點,使得每個結點被訪問一次且僅被訪問一次。 

前序遍歷:若樹為空,不進行遍歷;否則訪問根結點;按照從左到右的順序前序遍歷根結點的每一棵子樹。

後序遍歷 :若樹為空,則遍歷結束;否則按照從左到右的順序後序遍歷根結點的每一棵子樹;訪問根結點。

層序遍歷 :從樹的第一層(即根結點)開始,自上而下逐層遍歷,在同一層中,按從左到右的順序對結點逐個訪問。 

雙親表示法

基本思想:

用一維陣列來儲存樹的各個結點(一般按層序儲存),

陣列中的乙個元素對應樹中的乙個結點,

每個結點記錄兩類資訊:結點的資料資訊以及該結點的雙親在陣列中的下標。

data:儲存樹中結點的資料資訊

parent:儲存該結點的雙親在陣列中的下標

template

struct pnode ;

孩子表示法

基本思想:

把每個結點的孩子排列起來,看成是乙個線性表,且以單鏈表儲存,則n個結點共有 n 個孩子鍊錶。

struct ctnode

;template

struct cbnode

;孩子兄弟表示法

firstchild  data  rightsib

data:資料域,儲存該結點的資料資訊;

firstchild:指標域,指向該結點第乙個孩子;

rightsib:指標域,指向該結點的右兄弟結點。 

template  

struct tnode;

資料結構筆記 樹

2017.12.22 1.順序查詢 a 建立哨兵 2.二分法查詢 binary search a 有序連續儲存在陣列 b 邊界錯位 if left right 查詢失敗 c 時間複雜度logn 1.判定樹上每個結點需要查詢次數剛好為該結點所在層數 2.查詢成功時查詢次數不會超過判定樹的深度 3.as...

資料結構筆記 樹

一 樹的定義樹 n n 0 個結點的有限集合。當n 0時,稱為空樹 任意一棵非空樹滿足以下條件 有且僅有乙個特定的稱為 根的結點 當n 1 時,除根結點之外的其餘結點被分成m m 0 個 互不相交 的有限集合t1 t2,tm 其中每個集合又是一棵樹,並稱為這個根結點的子樹。樹的定義是採用遞迴方法。二...

資料結構筆記(樹)

經過線性表 包括幾種特殊的線性表 的學習,對資料的儲存和處理已經有了初步認識,關於樹的邏輯結構學習有總結如下 一 樹的定義 採用遞迴方法 樹 n n 0 個結點的有限集合。當n 0時,稱為空樹 任意一棵非空樹滿足以下條件 1 有且僅有乙個特定的稱為根的結點 2 當n 1時,除根結點之外的其餘結點被分...