哈夫曼树&哈夫曼编码


哈夫曼树

哈夫曼树也叫最优二叉树(哈夫曼树)

定义

给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

名词解释

名词 解释
路径长度 根结点到第L层结点路径长度为L-1
树的带权路径长度(WPL) 树中所有叶子结点的带权路径长度之和
upload successful
其中,n表示叶子结点的数目,wi和li分别表示叶子结点ki的权值和树根结点到叶子结点ki之间的路径长度。
upload successful

|

特点

  1. 哈夫曼树中权越大的叶子离根越近(WPL最小的二叉树)
  2. 具有相同带权结点的哈夫曼树不惟一
  3. 哈夫曼树的结点的度数为 0 或 2, 没有度为 1 的结点;
  4. 包含 n 个叶子结点的哈夫曼树中共有 2n – 1 个结点。
  5. 包含 n 棵树的森林要经过 n–1 次合并才能形成哈夫曼树,共产生 n–1 个新结点

upload successful
upload successful
WPL 最小的值所属的树即为哈夫曼树

upload successful
upload successful
upload successful

哈夫曼创建

upload successful
为什么数组buffTree[2n-1] 的大小是2n-1,是因为n个子节点构成的树节点最多的个数是2n-1个
upload successful

upload successful

upload successful

哈夫曼树编码

前缀编码

upload successful

upload successful

upload successful

特点:
权值越高的叶子节点越靠近根节点

upload successful


文章作者: Alex.Lin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alex.Lin !
  目录