資料結構與演算法 10.樹
阿新 • • 發佈:2021-10-29
樹
樹的基本概念 每個節點有0個或多個子節點 沒有父節點的節點稱為根節點 每一個非根節點有且只有一個父節點 除根節點外,每個子節點可以分為多個不相交的子樹 一棵樹可以沒有任何節點,稱為空樹,可以只有1個節點,即根節點 節點、根節點、子節點、父節點、兄弟節點 子樹、左子樹、右子樹 節點的度(degree):子樹的個數 樹的度:所有節點度中的最大值 葉子節點(leaf):度為0的節點 層數(level):根節點在第1層,根節點的子節點在第2層,以此類推 節點的深度(depth):從根節點到當前節點的唯一路徑上的節點總數 節點的高度(height):從當前節點到最遠葉子節點的路徑上的節點總數 樹的深度:所有節點深度中的最大值 樹的高度:所有節點高度中的最大值 樹的深度等於樹的高度 有序樹:樹中任意節點的子節點之間有順序關係 無序樹:樹中任意節點的子節點之間沒有順序關係,也叫自由樹 森林:由m(m>=0)棵互不相交的樹組成的集合 樹的種類 二叉樹:每個節點最多含有兩個子樹的樹 完全二叉樹:對於一棵二叉樹,設其深度為d(d>1),除了第d層,其他各層的節點數均已達最大值,且d層所有節點從左向右緊密排列 滿二叉樹:所有葉節點都在最底層的完全二叉樹 平衡二叉樹(AVL樹):任何節點的兩棵子樹的高度差不大於1的二叉樹 排序二叉樹(binary search tree):也叫二叉查詢樹 霍夫曼樹:帶權路徑最短的二叉樹,也叫最優二叉樹,用於資訊編碼 B樹:一種對讀寫操作進行優化的自平衡的二叉查詢樹,能夠保持資料有序,擁有多於兩個子樹 常見應用場景: xml、html等,編寫解析器時 路由協議 mysql資料庫索引 檔案系統的目錄結構 很多AI演算法都是樹搜尋,此外機器學習中的decision tree也是樹結構