1. 程式人生 > 其它 >樹——樹、二叉樹、哈夫曼樹的性質

樹——樹、二叉樹、哈夫曼樹的性質

樹與二叉樹

>樹

樹的基本術語

  • 祖先:根A到結點D的唯一路徑上的任意結點都可稱為結點D的祖先。
  • 雙親:相對於孩子在其上一級。
  • 分支結點:度大於0的結點。
  • 葉子結點:度等於0的結點。
  • 兄弟:有相同雙親的結點。

定義

  1. 結點的層數從樹根開始定義,根結點為第1層,它的子結點為第2層。

  2. 結點的深度是從根結點開始自頂向下逐層累加。

  3. 結點的高度是從葉結點開始自底向上逐層累加。

    樹的高度等於結點的最大層數

樹的重要性質

  • 樹中的**結點數 **等於 所有結點的度數之和 + 1

  • 高度為km叉樹最多有(m k - 1) / (m - 1)個結點

>二叉樹

  • 滿二叉樹

    • 一顆高度為h,且含有2h
      -1個結點的二叉樹稱為滿二叉樹,即樹中的每層都含有最多的結點。
    • 對滿二叉樹按層序編號:約定編號從根結點起,自上而下,自左而右。
      • 這樣,每個結點對應一個編號,對於編號為i的結點,若有雙親,則其雙親為i/2,若有左孩子,則左孩子為2i;若有右孩子,則右孩子為2i+1。
  • 完全二叉樹

    • 一顆高度為h,且含有n個結點,每個結點編號與滿二叉樹中的編號一一對應稱為完全二叉樹。

    • 葉子結點只可能在層次最大的兩層上出現。對於最大層次中的葉子結點,都依次排列在該層最左邊的位置上。
    • 若有度為1的結點,則只可能有一個,且該結點只有 左孩子 而無右孩子。
    • 按層序編號後,一旦出現結點i為葉子結點或只有左孩子,則編號大於i的結點均為葉子結點。
    • 若n為奇數,則每個分支結點都有左孩子和右孩子;
      • 若n為偶數,則編號最大的分支結點只有 左孩子 ,沒有右孩子。
      • 其餘分支結點左右孩子都有。
  • 二叉樹的儲存結構

    1. 順序儲存結構
    2. 鏈式儲存結構
  • 二叉樹的遍歷

    1. 先序遍歷(MLR)

    2. 中序遍歷(LMR)

    3. 後序遍歷(LRM)

  • 樹轉換成二叉樹

    口訣:左孩子,右兄弟。

>哈夫曼樹

  • WPL(帶權路徑長度)

    樹中所有葉子結點的帶權路徑長度之和。
    (路徑長度根結點從0開始向下累加)
  • 哈夫曼樹的構造

    WPL=5 x 2 + 2 x 3 + 4 x 3 + 7 x 2 + 9 x 2 = 60