樹
樹的定義
- 樹是一種非線性數據結構,它是若干結點的集合。
- 是由唯一的根和若干不相交的子樹組成的。
- 子樹又是一顆樹,因此樹的定義是遞歸的。
- 樹的結點數目可為0,此時稱之為空樹。
樹的基本術語
- 結點(結點包含數據元素和指向子樹的分支)
- 路徑:一個結點和另一個經過的邊和結點的序列
- 根(根結點):一棵樹的頂點
- 結點的度:結點擁有子樹和分支的個數。
- 樹的度:樹中結點度的最大值。
- 葉子結點(終端結點):度為0的結點。
- 分支結點(非終端結點):度不為0的結點。
- 孩子:結點的子樹的根。
- 雙親(父結點):指向該結點的結點。
- 兄弟:擁有相同父結點的孩子互稱兄弟。
- 祖先:從根到某結點路徑上的所有結點,都稱為該結點的祖先。
- 子孫:以某結點為根的子樹的所有結點都為該結點的子孫。
- 層次:從根開始,為第一層,根的孩子為第二層,根的孩子的孩子為第三層,以此類推。
- 樹的高度(樹的深度):樹中結點的最大層次。
- 堂兄弟:雙親不同但雙親在同一層的結點之間互稱堂兄弟。
- 有序樹:樹中結點的子樹從左到右是有次序的,不能交換,這樣樹叫有序樹。
- 無序樹:樹中結點的子樹沒有順序
- 豐滿樹(理想平衡樹):除最底層外,其他層都是滿的樹。
- 森林:若干棵不相交的樹的集合。
對與結點深度和高度的理解
- 結點的深度是指根結點到該結點路徑上結點的個數
- 從某結點往下走到終端結點可有多條路徑,最長的那條路徑上結點的個數為該結點在樹中的高度。
- 根結點的高度為樹的高度
樹的儲存結構
- 順序儲存結構
- 鏈式儲存結構
- 孩子儲存結構(本質上是圖的鄰接表儲存結構)
- 孩子兄弟儲存結構