首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

資料結構:樹與二叉樹核心概念、性質與轉換

     編輯:DB2 教學

資料結構:樹與二叉樹核心概念、性質與轉換

樹的定義與基本術語

樹 = n (n≥0) 節點有限集。n=0 為空樹。非空樹:唯一根節點;其餘節點分為 m 個不相交子樹,各子樹本身也是樹 (遞歸定義)。

術語定義
節點度子樹棵數
樹的度所有節點度的最大值
葉子/終端節點度為 0
分支/非終端節點度 ≠ 0 (根除外稱內部節點)
層次根為第 1 層,子節點 = 父層次 + 1
深度/高度最大層次值
有序/無序樹子樹有無左右順序之分
森林m 棵互不相交樹的集合 (刪除根後形成)

二叉樹定義與特殊形態

二叉樹 = n 節點有限集。空樹或:唯一根 + 左/右子樹 (互不相交,皆為二叉樹)。特徵:度 ≤ 2、左右有序不可顛倒、單子樹也分左右。

  • 滿二叉樹:所有分支節點度=2,葉子僅在最底層,同深度下節點數最多
  • 完全二叉樹:按層序編號與同深度滿二叉樹位置對應。葉子僅最底兩層、最底層葉子靠左、倒數第二層葉子靠右、度=1 僅有左孩子、同節點數深度最小

二叉樹五大性質 (含證明)

  1. 第 i 層至多 2^(i-1) 節點 (數學歸納法)
  2. 深度 k 樹至多 2^k - 1 節點 (各層上限求和)
  3. n0 = n2 + 1 (葉子數 = 度為 2 節點數 + 1)。證明:N=n0+n1+n2,分支數 B=n1+2n2,N=B+1 → 推導得證
  4. n 節點完全二叉樹深度 = ⌊log2 n⌋ + 1
  5. 完全二叉樹編號規則:i=1 為根;i>1 雙親 = ⌊i/2⌋;2i>n 為葉子無左孩子,否則左孩子=2i;2i+1>n 無右孩子,否則右孩子=2i+1

儲存結構

  • 順序儲存:適合完全二叉樹,陣列下標對應編號
  • 鏈式儲存:二叉鏈表 (左/右指標)、三叉鏈表 (+父指標)

遍歷與線索化

  • 三種遞歸遍歷:先序/中序/後序
  • 非遞歸:堆疊 (先/中序)、雙堆疊+標記 (後序)、隊列 (層次)
  • 線索二叉樹:利用 n+1 個空指標域存前驅/後繼,中序線索化遞歸算法、無堆疊遍歷

樹、森林與二叉樹轉換

  1. 樹 → 二叉樹:長子作為左孩子,兄弟作為右孩子 (左孩子-右兄弟表示法)
  2. 森林 → 二叉樹:各樹轉二叉樹,首樹根為整體根,其餘樹根串聯為右孩子鏈
  3. 二叉樹 → 樹:刪除所有右孩子連線,層次還原

哈夫曼樹 (最優樹)

帶權路徑長度 (WPL) 最小的二叉樹。構造:反覆合併權值最小的兩棵樹。應用:哈夫曼編碼 (最佳前綴碼)、最優合併模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved