樹與二叉樹

1、樹

1. 樹的定義

  • 非線性數據結構
  • 除根節點外,一個直接前驅,多個直接後繼

2. 樹的邏輯表示方法

  • 樹形表示法

3. 樹的基本術語

  • 結點的度、樹的度、m次樹
  • 分支結點、葉子結點
  • 路徑、路徑長度
  • 孩子結點、雙親結點、兄弟節點、子孫結點、祖先結點
  • 結點的層次、樹的高度(深度)
  • 有序樹、無序樹
  • 森林

4. 樹的性質

  •  4個性質

5. 樹的基本運算

  • 查找
  • 插入或刪除
  • 遍歷

 6. 樹的存儲結構

  • 雙親存儲結構:用一個數組存儲結構體(數據+指向雙親的指針)
  • 孩子鏈存儲結構:根據樹的度肯定指向孩子指針的個數,結構體(數據+指向孩子結點的指針數組)
  • 孩子兄弟鏈存儲結構:一個數據元素域、一個指向第一個孩子的指針、一個指向下一個兄弟結點指針域

2、二叉樹

1. 二叉樹的概念

  • 結構簡單、存儲效率高、運算算法相對簡單
  • 任何m次樹均可以轉換爲二叉樹
  • 嚴格區分左右子樹
  • 五種基本形態:空、單結點、右爲空、左爲空、左右不爲空
  • 滿二叉樹:徹底二叉樹的一種特例
  • 徹底二叉樹:最下面一層葉子結點都排列在左邊,滿二叉樹是完成二叉樹的一個特例

2. 二叉樹的性質

  • 4個性質 

3. 二叉樹與樹、森林之間的轉換(一一對應)

  • 森林、樹轉二叉樹
    • 加水平線
    • 刪連線
    • 旋轉45度 

 

  • 二叉樹還原爲森林、樹
    • 刪右孩子連線  
    • 與雙親結點連線  

 

 

4. 二叉樹存儲結構

  • 順序存儲結構:
    • 存儲在數組  
    • 樹結點編號,按照編號存儲在對應的下標,空分支用#補齊
  • 鏈式存儲結構:左子針域、值域、右子針域
相關文章
相關標籤/搜索