資料結構學習筆記(十七)——樹的基本概念

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) 個互不相交的樹的集合稱為森林。去掉樹的根節點就成了森林。