1 樹
:由n(n≥0)個節點組成的有限集合(記為T)。如果n=0,表示為空樹,這是樹的特例;如果n>0,這n個節點中存在(有且僅有)一個節點作為樹的
根節點
,簡稱
根(root)
,其餘為互不相交的有限集,每個子集本身又符合樹的定義,稱為根的
子樹
。
2 樹的特點
(1)每個節點可以有零個或多個後繼節點,但有且僅有一個前驅節點(根節點除外);
(2)這些資料節點按分支組織起來,清晰地反應了資料元素之間的層次關係。
3 基本運算
:
(1)
InitTree(&t)
:初始化樹
(2)
DestroyTree(&t)
:銷燬樹
(3)
Parent(t)
:求t所指節點的雙親節點
(4)
Sons(t)
:求t所指節點的子孫節點
4 樹的邏輯表示方法
:
(1)
樹形表示法
:用一個圓圈表示一個節點,圓圈內的符號代表該節點的資料資訊,節點之間的關係透過連線表示。
樹形表示法
(2)
文氏圖表示法
:每棵樹對應一個圓圈,圓圈內包含根節點和子樹的圓圈,同一個根節點下各個子樹對應的圓圈不能相交。節點之間的關係是透過圓圈的包含關係來表示的。
文氏圖表示法
(3)
凹入表示法
:每棵樹的根對應著一個條形,子樹的根對應著一個較短的條形,且樹根在上,子樹的根在下,同一根下的各個子樹的根對應的條形長度一樣。
凹入表示法
(4)
括號表示法
:每棵樹對應一個由根作為名字的表,表名放在表的左邊,表是由在一個括號裡的各子樹對應的表組成的,各子樹對應的表之間用逗號分開。節點之間的關係是透過括號的巢狀表示的。如:A(B(D,E),C(F))。
5 樹的基本術語
(1)
節點的度與樹的度
:樹中某個節點的
子樹個數
稱為該
節點的度
。樹中各節點的度的最大值稱為
樹的度
,通常將度為m的樹稱為
m次樹
。
(2)
分支節點與葉子節點
:度不為零的節點稱為
非終端節點
,又叫
分支節點
。度為零的節點稱為
終端節點
或
葉子節點
。
(3)
路徑與路徑長度
:對於任意兩個節點ki和kj,若樹中存在一個節點序列ki,ki1,ki2,。。。,kin,kj,使得序列中除ki外的
任一
節點都是其在序列中的前一個節點的後繼節點,則稱該節點序列為由ki到kj的一條
路徑
,用路徑所透過的節點序列表示這條路徑。路徑長度等於路徑所透過的節點數目減1(即路徑上分支數目)。
(4)
孩子節點
、
雙親節點
和
兄弟節點
:在一棵樹中,每個節點的後繼節點稱為該節點的
孩子節點
(或
子女節點
)。而該節點則稱為其孩子節點的
雙親節點
(或
父母節點
)。具有同一雙親的孩子節點互為
兄弟節點
。另外,可以把每個節點的所有子樹中的節點稱為該節點的
子孫節點
,從樹根節點到達該節點的路徑上經過的所以節點(除自身外)稱為該節點的
祖先節點
。
(5)
節點的層次和樹的高度
:樹中的
每個節點都處在一定的層次上
。節點層次從樹根開始定義,根節點為第一層,它的孩子節點為第二層,以此類推,一個節點所在的層次為其雙親節點所在的層次加1。樹中節點的最大層次稱為
樹的高度
(或
樹的深度
)。
(6)
有序樹
和
無序樹
:若樹中各節點的子樹是按照一定的次序從左向右安排的,且相對次序是不能隨意變換的,則稱為
有序樹
,否則稱為
無序樹。
(7)
森林
:n(n>0) 個互不相交的樹的集合稱為森林。去掉樹的根節點就成了森林。