一、樹的定義樹:n
(n≥0
)個結點的有限集合。
當n=0時,稱為空樹;
任意一棵非空樹滿足以下條件: ⑴
有且僅有乙個特定的稱為
根的結點; ⑵
當n>1
時,除根結點之外的其餘結點被分成m(
m>0)個
互不相交
的有限集合t1
,t2,
…,tm
,其中每個集合又是一棵樹,並稱為這個根結點的子樹。
樹的定義是採用遞迴方法。
二、樹的基本術語
結點的度:結點所擁有的子樹的個數。
樹的度:樹中各結點度的最大值。
葉子節點:度為0的結點,也成為終端節點。
分支節點:度不為0的結點,也成為非終端節點。
孩子、雙親:書中某結點子樹的根結點成為這個結點的孩子結點,這個結點成為它孩子結點的雙親結點。
兄弟:具有同乙個雙親的孩子結點互稱為兄弟。
路徑:如果樹的結點序列n
1,n
2, …, nk有如下關係:結點ni是n
i+1的雙親(1<=in
1,n
2, …,nk稱為一條由n
1至n
k的路徑;路徑上經過的邊的個數稱為路徑長度。
祖先、子孫:在樹中,如果有一條路徑從結點x到結點y,那麼x就稱為y的祖先,而y稱為x的子孫。
結點所在層數:根結點的層數為
1;對其餘任何結點,若某結點在第
k層,則其孩子結點在第
k+1層。
樹的深度:
樹中所有結點的最大層數,也稱高度。
層序編號:將樹中結點按照從上層到下層、同層從左到右的次序依次給他們編以從1開始的連續自然數。
有序樹、無序樹:如果一棵樹中的結點的格仔數從左到右是有次序的,稱這棵樹為有序樹;反之,成為無序樹。
資料結構中討論的一般是有序樹。
森林:m(m>0)棵互不相交的樹的集合。
三、樹的遍歷操作
樹的遍歷:從根
結點出發,按照某種
次序訪問
樹中所有結點,使得每個結點被訪問一次且僅被訪問一次。
1. 前序遍歷
樹的前序遍歷操作定義為:
(1) 訪問根節點;
(2) 按照從左到右的順序前序遍歷根節點的每一棵子樹。
前序遍歷序列:a b d e h i f c g
2. 後序遍歷
樹的後續遍歷操作定義為:
若樹為空,則遍歷結束;否則:
(1) 按照從左到右的順序後序遍歷根節點的每一棵子樹;
(2) 訪問根節點。
後序遍歷序列:d h i e f b g c a
3. 層序遍歷
樹的層序遍歷操作定義為:
從樹的第一層(即根節點)開始,自上而下逐層遍歷,在同一層中,按從左到右的順序對結點逐個訪問。
層序遍歷序列:a b c d e f g h i
一、雙親表示法
基本思想:
用一維陣列來儲存樹的各個結點(一般按
層序儲存),
陣列中的乙個元素對應樹中的
乙個結點,
每個結點記錄兩類資訊:結點的資料資訊以及該結點的雙親在陣列中的下標。
data:
儲存樹中結點的資料資訊
parent:
儲存該結點的雙親在陣列中的下標
template struct pnode;
二、孩子表示法——多重鍊錶表示法
確定鍊錶的結構:鍊錶中的每個節點包括乙個資料域和多個指標域,每個指標域指向該結點的乙個孩子結點。
方案一:指標域的個數等於樹的度
其中:data:資料域,存放該節點的資料資訊;
child1~childd:指標域,指向該結點的孩子。
缺點:浪費空間。
方案二:指標域的個數等於該結點的度
其中:data:資料域,存放該結點的資料資訊;
degree:度域,存放該結點的度;
child1~childd:指標域,指向該結點的孩子。
缺點:結點結構不一致
三、孩子表示法——孩子鍊錶表示法
特點:將每個結點的所有孩子放在一起,構成線性表。
基本思想:
把每個結點的孩子排列起來,看成是乙個線性表,且以單鏈表儲存,則n個結點共有n個孩子鍊錶。
這 n
個單鏈表共有
n 個頭指標,
這 n
個頭指標又組成了乙個線性表。
為了便於進行查詢
採用順序儲存儲存每個鍊錶的頭指標。
最後,將存放
n 個頭指標的陣列和存放
n個結點的陣列結合起來,構成孩子鍊錶的
表頭陣列。
孩子結點:
資料結構筆記 樹
2017.12.22 1.順序查詢 a 建立哨兵 2.二分法查詢 binary search a 有序連續儲存在陣列 b 邊界錯位 if left right 查詢失敗 c 時間複雜度logn 1.判定樹上每個結點需要查詢次數剛好為該結點所在層數 2.查詢成功時查詢次數不會超過判定樹的深度 3.as...
資料結構筆記(樹)
經過線性表 包括幾種特殊的線性表 的學習,對資料的儲存和處理已經有了初步認識,關於樹的邏輯結構學習有總結如下 一 樹的定義 採用遞迴方法 樹 n n 0 個結點的有限集合。當n 0時,稱為空樹 任意一棵非空樹滿足以下條件 1 有且僅有乙個特定的稱為根的結點 2 當n 1時,除根結點之外的其餘結點被分...
資料結構筆記8 樹
樹的定義 在樹中通常將資料元素成為結點。樹 n n 0 個結點的有限集合。當n 0時,稱為空樹。任意一棵非空樹滿足以下條件 有且僅有乙個特定的稱為根的結點 當n 1時,除根結點之外的其餘結點被分成m m 0 個互不相交的有限集合t1,t2,tm,其中每個集合又是一棵樹,並稱為這個根結點的子樹。樹的基...