霍夫曼樹(Huffman Tree)

霍夫曼樹(Huffman Tree)

簡介

霍夫曼樹又稱最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的葉結點的權值乘上其到根結點的路徑長度(若根結點爲0層,葉結點到根結點的路徑長度爲葉結點的層數)。樹的路徑長度是從樹根到每一結點的路徑長度之和,記爲WPL=(W1L1+W2L2+W3L3+…+WnLn),N個權值Wi(i=1,2,…n)構成一棵有N個葉結點的二叉樹,相應的葉結點的路徑長度爲Li(i=1,2,…n)。可以證明霍夫曼樹的WPL是最小的。

  • 葉子節點帶權路徑:葉子節點的權乘以路徑
  • 樹帶權路徑長度(WPL):葉子節點帶權路徑總和

實現思路

  1. 數據排序。

    image-20200308121628867

  2. 將最小的兩個數組成二叉樹,原數據的最小兩個數刪除,替換成改兩個小數的和。

    image-20200308121225773

  3. 重複1,2步操作,直到只剩兩個數,最終結果如下。

    image-20200308121727328

霍夫曼編碼(Huffman Coding)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章