資料結構 - 樹 - 樹的基本介紹
樹的定義
樹是由 \(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}\) 稱為子樹森林。