1. 程式人生 > >樹之赫夫曼樹 最優二叉樹

樹之赫夫曼樹 最優二叉樹

一、介紹

赫夫曼樹可以用來優化演算法,減少執行次數;還可以用於電報編碼。
這裡寫圖片描述

二、優化演算法

對於我們巢狀的if語句,通常我們需要判斷多次if。但是if裡表示式的順序與程式執行速度有很大關係。如果我們把頻率高的if條件放在前面的話就能夠避免多次檢測false的if語句。
這裡寫圖片描述
這裡寫圖片描述
演算法思想:
這裡寫圖片描述

三、赫夫曼編碼

這裡寫圖片描述
這裡寫圖片描述
赫夫曼樹結點每向下一層只有兩個度,對應於0-1情況。從根結點走到葉子結點只有一條路徑,而且不使用非終端結點(分支結點)。從而保證編碼的唯一性。如果使用了分支結點,顯然就會導致編碼的歧義。
使用赫爾曼樹實現的字典升序:
這裡寫圖片描述
如上圖從左到右葉子節點實現了字典升序。000<001<01<10<11。

四、例項