1.樹的定義
樹是n(n>=0)個結點的有限集合,n=0時,稱為空樹,這是一種特殊情況。在任意一棵非空樹種應滿足:
1)有且僅有乙個特定的成為根的結點
2)當n>1時,其餘結點可分為m(m>0)個互不相交的有限集合t1,t2,t3..tm,其中每乙個集合,本身又是一棵樹,並且稱為根節點的子樹。顯然樹的定義是遞迴的,是一種遞迴的資料結構。樹作為一種邏輯結構,同時也是一種分層結構。
特點:1)樹的根結點沒有前驅結點,除根以外的所有節點有且只有乙個前驅結點。
2) 樹中所有結點可以有零個或多個後繼結點
樹適合表示有層次結構的資料。
3.樹中乙個結點的子結點個數稱為該結點的度,樹中結點的最大度數(某乙個,不是全部結點)稱為樹的度。
度大於0的結點稱為分支結點(也稱為非終端結點);度為0的結點稱為葉子結點。在分支結點中,每個結點的分支數就是該結點的度。
結點的層次從樹根開始定義,根結點為第一層
結點的深度是從根結點開始自頂向下逐層累加的
結點的高度是從葉結點開始自底向上逐層累加的
樹的高度(又稱深度)是樹中結點的最大層數
4.有序樹和無序樹:樹中結點的子樹從左到右是有次序的,不能交換,這樣的樹叫做有序樹,有序樹中,乙個結點其子結點按從左到右順序出現是有關聯的。反之,稱為無序樹,
路徑和路徑長度:樹中兩個結點之間的路徑是由這兩個結點之間所經過的結點序列構成的,而路徑長度是路徑上所經過的邊的個數。
注意:由於樹中的分支是有向的,即從雙親結點指向孩子結點,所以樹中的路徑是從上向下的,同一雙親結點的兩個孩子結點之間不存在路徑
5.森林:森林是m(m>=0)棵互不相交的樹的集合。森林的概念與樹的概念十分相近,因為只要把樹的根節點刪去就變成了森林,反之,只要給n棵獨立的樹加上乙個結點,並把這n棵樹作為該結點的子樹,則森林就變成了樹
6.樹的性質:
1)樹中的結點數等於所有結點的度數加1
2)度為m的樹中第i層上至多有m^i-1(i>=1)
3)高度為h的m叉樹至多有(m^h - 1)/(m-1)個結點
4) 具有n個結點的m叉樹的最小高度為向上取整(⌈
logm(n(m-1)+1)⌉
)7.樹的路徑長度是從樹根到每乙個結點的路徑長度的總和
資料結構 王道2017 第2章 線性表
1.線性表的定義和基本操作 1.1 線性表的定義 線性表 i具有相同資料型別的n n 0 個資料元素的有限序列。其中n為表長,當n 0時,該線性表是乙個空表。若用l命名線性表,則一般表示為 l a1,a2,a3.ai,ai 1.an 其中,a1是唯一的第乙個資料元素,又稱為表頭元素 an是唯一的最後...
《大話資料結構》第4章 棧與佇列
棧與佇列 棧 佇列都是特殊的線性表 受限表 只不過對插入和刪除操作做了限制 沒有修改操作 這些操作只能限制在表的一端 what棧 棧是限定僅在表尾 這裡的表尾是指棧頂,而不是棧底 進行插入和刪除操作的線性表 what佇列 佇列是只允許在表的一端進行插入操作,而在表的另一端進行刪除操作的線性表 棧 佇...
《大話資料結構》第4章 棧與佇列
我們把乙個直接呼叫自己或通過一系列的呼叫語句間接地呼叫自己的函式,稱做遞迴函式 版本1 迭代版本 func fbi1 i int int return arr i 版本2 遞迴版本 func fbi2 i int int 迭代使用的是迴圈結構,遞迴使用的是選擇結構遞迴使程式的結構更清晰 更簡潔 更容...