樹的定義
在樹中通常將資料元素成為結點。
樹: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時,除根結點之外的其餘結點被分...