霍夫曼樹(Huffman Tree)
簡介
霍夫曼樹又稱最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的葉結點的權值乘上其到根結點的路徑長度(若根結點爲0層,葉結點到根結點的路徑長度爲葉結點的層數)。樹的路徑長度是從樹根到每一結點的路徑長度之和,記爲WPL=(W1L1+W2L2+W3L3+…+WnLn),N個權值Wi(i=1,2,…n)構成一棵有N個葉結點的二叉樹,相應的葉結點的路徑長度爲Li(i=1,2,…n)。可以證明霍夫曼樹的WPL是最小的。
- 葉子節點帶權路徑:葉子節點的權乘以路徑
- 樹帶權路徑長度(WPL):葉子節點帶權路徑總和
實現思路
-
數據排序。
-
將最小的兩個數組成二叉樹,原數據的最小兩個數刪除,替換成改兩個小數的和。
-
重複1,2步操作,直到只剩兩個數,最終結果如下。