美文网首页
构造哈夫曼树和对每个字符进行编码

构造哈夫曼树和对每个字符进行编码

作者: 小小奶狗 | 来源:发表于2018-05-08 21:52 被阅读110次

必备知识

  • 哈夫曼树也称为最优二叉树。
  • 哈夫曼树并不唯一,但带权路径长度一定是相同的。
  • 哈夫曼树中,左子树值必须小于右子树。

下面假设有八个概率数对应八个字母 0.19,0.21,0.02,0.03,0.06,0.07,0.10,0.32

构造思路和实现步骤

  1. 从小到大排列权值(图中没有排列)�

  2. 19,21,2,3,6,7,10,32中选出权值最小的两个数据2,3,同时算出结点和为5。

  3. 19,21,6,7,10,32,5中选出权值最小的两个数据5,6,同时算出结点和为11。

  4. 19,21,7,10,32,11中选出权值最小的两个数据7,10

由于这两个数字都不属于已经构造好的二叉树结点,所以需要重新开一个二叉树;如果两个数的和正好是下一步两个最小数的一个,那继续生长,否则并列生长。

  1. 19,21,32,11,17中选出权值最小的两个数据11,17,同时算出结点和为28。

  2. 19,21,32,28中选出权值最小的两个数据19,21,同时算出结点和为40。

  3. 32,28,40中选出权值最小的两个数据28,32,同时算出结点和为60。

  4. 40,60中选出权值最小的两个数据40,60,同时算出结点和为100。哈夫曼树构建完毕。


  • 接下来我们在每根线上写上0或1,左子树写0右子树写1。那么ABCDEFGH对应的数值0.19,0.21,0.02,0.03,0.06,0.07,0.10,0.32进行哈夫曼编码后分别为:
- A(19):00
- B(21):01
- C(2):10000
- D(3):10001
- E(6):1001
- F(7):1010
- G(10):1011
- H(32):11

参考:

相关文章

  • 哈弗曼编码

    基本思想 以字符的使用频率作为权构建一颗哈弗曼树,然后利用哈弗曼树对字符进行编码。 构造一颗哈弗曼树,是将要编码的...

  • 构造哈夫曼树和对每个字符进行编码

    必备知识 哈夫曼树也称为最优二叉树。 哈夫曼树并不唯一,但带权路径长度一定是相同的。 哈夫曼树中,左子树值必须小于...

  • Huffman树及Huffman编码

    Huffman树及Huffman编码 一.实验目的 掌握哈夫曼树的构造算法、哈夫曼编码原理。 二.实验要求与内容 ...

  • 《恋上数据结构与算法一》笔记(十八)哈夫曼树

    目录 哈夫曼编码(Huffman Coding) 哈夫曼树 构建哈夫曼树 构建哈夫曼编码 一 哈夫曼编码(Huff...

  • 《数据结构与算法》总结(七)哈夫曼树

    目录 哈夫曼编码(Huffman Coding) 哈夫曼树 构建哈夫曼树 构建哈夫曼编码 一 哈夫曼编码(Huff...

  • 题型

    树 二叉树相关计算二叉树的三种遍历序列 前/后序+中序序列构造树 哈夫曼树 哈夫曼树的构造哈夫曼编码带权路径长度压...

  • A simple test

    哈夫曼编码 此代码用于生成哈夫曼树并且获取哈夫曼编码

  • 2018-11-27

    今天看了哈夫曼构造过程,了解如何构造哈夫曼树。

  • 算术编码和哈夫曼编码

    一. 哈夫曼编码 1. 哈夫曼编码思想 哈夫曼编码思想: 对于更高频的符号,使用更短的编码。这样在对整个信息进行...

  • 二十五、哈夫曼树

    哈夫曼编码(Huffman Coding) 哈夫曼编码,又称为霍夫曼编码,它是现代压缩算法的基础 假设要把字符串【...

网友评论

      本文标题:构造哈夫曼树和对每个字符进行编码

      本文链接:https://www.haomeiwen.com/subject/hyxgrftx.html