哈夫曼樹詳解

2021-07-10 12:58:56 字數 1046 閱讀 6084

一、哈夫曼樹的定義

(1)簡單路徑長度

所謂樹的簡單路徑長度,是指從樹的跟節點到每個節點的路徑長度之和。

完全二叉樹是簡單路徑長度更小的二叉樹。

(2)加權路徑長度

所謂樹的加權路徑長度,是指樹中所以帶權(非0)葉節點的加權路徑長度之和。

如下圖所示,不同的樹結構,加權路徑長度也不一樣。

(3)哈夫曼樹的定義

哈夫曼樹又稱為最優二叉樹。哈夫曼樹是指具有相同節點的樹中,加權路徑長度最小的二叉樹。

二、哈夫曼樹的構造過程

哈夫曼樹的構造過程需要借助最小堆演算法。

如下圖所示,首先將原始資料構造出乙個最小堆,然後每次從堆中選取值最小兩個節點,計算他們的權重之和,作為乙個新節點的值,然後插入到最小堆中,直到所有資料節點都構造完畢,成為乙個最大堆。

三、哈夫曼樹的作用(哈夫曼編碼)

哈夫曼編碼是一種編碼方式,是一種用於無損資料壓縮的權編碼演算法。編碼之後的字串的平均長度、期望值降低,從而達到無失真壓縮資料的目的。

哈夫曼樹詳解

一 什麼是哈夫曼樹呢?自己的描述 在樹的路徑長度的基礎上引入了帶權路徑長度 weighted path length,wpl 一棵葉子結點帶權值 分支節點不帶權值 的二叉樹叫做擴充二叉樹。帶權值的結點均為葉子結點,不帶權值的均為分支節點 包括根結點 一棵擴充二叉樹 帶權二叉樹 的wpl最小,這麼一棵...

哈夫曼編碼 哈夫曼樹

1.定義 哈夫曼編碼主要用於資料壓縮。哈夫曼編碼是一種可變長編碼。該編碼將出現頻率高的字元,使用短編碼 將出現頻率低的字元,使用長編碼。變長編碼的主要問題是,必須實現非字首編碼,即在乙個字符集中,任何乙個字元的編碼都不是另乙個字元編碼的字首。如 0 10就是非字首編碼,而0 01不是非字首編碼。2....

哈夫曼樹 哈夫曼編碼

定義從a結點到b結點所經過的分支序列為從a結點到b結點的路徑 定義從a結點到b結點所進過的分支個數為從a結點到b結點的路徑長度 從二叉樹的根結點到二叉樹中所有結點的路徑長度紙盒為該二叉樹的路徑長度 huffman樹 帶權值路徑長度最小的擴充二叉樹應是權值大的外界點舉例根結點最近的擴充二叉樹,該樹即為...