1. 程式人生 > 其它 >資料結構 - 樹 - 樹的基本介紹

資料結構 - 樹 - 樹的基本介紹

樹的定義

是由 \(n\) 個結點構成的有限集合,在任意一棵非空樹中:

  • 有且僅有一個稱為根 root 的結點。

  • \(n>1\) 時,其餘結點可分為若干個互不相交的集合,且這些集合中的每一個集合本身又是一棵樹,稱為根的子樹

(1) 資料物件

資料物件 D 是具有相同特性的資料元素的集合。

(2) 資料關係

D 為空集,則稱為空樹。否則:

  • D 中存在唯一稱為的資料元素;

  • \(n>1\) 時,其餘結點可分為 \(m(m>0)\) 個互不相交的有限集 \(T_1\)\(T_2\)\(\cdots\)\(T_m\),其中每一棵子集本身又是一棵樹,稱為根的子樹。

例子

對於一棵樹 \(T=\{A,B,C,D,E,F,G,H,I,J\}\)

\(A\) 是根,其餘結點劃分為三個互不相交的集合:

\[T_1 = \{B,E,F\}, \quad T_2 = \{C,G\}, \quad T_3 = \{D,H,I,J\} \]

每一個集合又都是一棵樹,它們是根 \(A\) 的子樹。對於 \(T_1\)\(B\) 是根,其餘結點又可以劃分為兩個互不相交的集合。

\[T_{11} = \{E\}, \quad T_{12} = \{F\} \]

\(T_{11}\)\(T_{12}\)\(B\) 的子樹。

其邏輯結構可以表示為下圖:

從邏輯結構上看

  • 樹中只有根結點沒有前驅;

  • 除根外,其餘結點有且僅有一個前驅;

  • 樹中的結點,可以有零個或多個後繼;

  • 除根之外的其他結點,都存在唯一一條從根到該結點的路徑。

  • 樹是一種分支結構。

樹的基本術語

結點:資料元素 \(+\) 若干指向子樹的分支。

結點的度:分支的個數。

樹的度:樹中所有結點的度的最大值。

葉子結點:度為零的結點。

分支結點:度大於零的結點。

一般的樹可能有隱性的序關係。

  • 有序樹:子樹之間有明確的次序關係。

  • 無序樹:子樹之間沒有順序要求。

(從根到結點的)路徑:由從根到該結點所經過的分支和結點構成。

對結點進行一些分類上的說明。

孩子結點、子孫結點

兄弟節點、堂兄弟

雙親結點、祖先節點

結點的層次:假設根節點的層次為 \(1\),在第 \(k\) 層結點的子樹的根結點,在第 \(k+1\) 層。

樹的深度:樹中葉子結點所在的最大層次。

森林\(m \,(m \geqslant 0)\) 棵互不相交的樹的集合。

則任何一棵非空樹都是一個二元組

\[\text{Tree}=\{\text{root}, \text{F}\} \]

其中,\(\text{root}\) 稱為根結點,\(\text{F}\) 稱為子樹森林。