哈夫曼树:

哈夫曼树可由如下方式构造:

  1. 由给定的 $n$ 个权值构造 $n$ 棵仅含有一个根结点的二叉树,记作集合 $F$。
  2. 从集合 $F$ 中选取根结点权值最小的两棵二叉树 $T1$,$T2$ 作为左右子树构造新的二叉树 $T3$,新二叉树的根结点为 $T1$,$T2$ 根结点的权值和。
  3. 从集合 $F$ 中删除 $T1$,$T2$,将 $T3$ 加入 $F$ 中。
  4. 直到 $F$ 中只剩下唯一一棵二叉树为止,这棵树即为哈夫曼树。

建树:

字符 频率 编码 长度
A 35 11 2
B 25 00 2
C 15 01 2
D 15 101 3
E 10 100 3

哈夫曼编码:

哈夫曼编码根据字符在数据中出现的频率来分配不同长度的编码,频率的字符分配较的编码,频率的字符分配较的编码,从而实现压缩数据的目的,是一种贪心思想

哈夫曼编码是一种前缀编码,即任一编码都不是其他任何一个编码的前缀。哈夫曼编码即为前缀编码中最短的。

带权路径长度(WPL)。

WPL 是每个编码的长度 $\times$ 频率。

字符 频率 编码 长度 WPL(单个的)
A 35 11 2 70
B 25 00 2 50
C 15 01 2 30
D 15 101 3 45
E 10 100 3 30

WPL(总共的)$=70+50+30+45+30=225$。