设计哈夫曼树编码

通过一个小例题来总结一下哈夫曼树的知识点:

问题:设某通讯系统中一个待传输的文本有六个不同的字符,他们的出现频率分别是0.5,0.8,1.4,2.2,2.3,2.8式设计哈夫曼编码。


如何构造哈夫曼树:

第一步:将这些频率看做权值,每个都看作是一棵树(这棵树只有一个叶子,既是叶子也是根)。

设计哈夫曼树编码_第1张图片

第二步:选出最小的两棵树,合并成一棵新的二叉树。(这时的元素个数变为n-1,去掉选中的两个小的数,加入合并后的数。)


设计哈夫曼树编码_第2张图片

设计哈夫曼树编码_第3张图片

第三步:重复第二步,选择两科小的树合并

设计哈夫曼树编码_第4张图片

设计哈夫曼树编码_第5张图片

直至剩下一棵树,也就是构造好的哈夫曼树了

设计哈夫曼树编码_第6张图片

设计哈夫曼树编码_第7张图片

哈夫曼树的性质:

  哈夫曼树建构建完成,根据上面步骤可以得到,叶子为n的时,要构建哈夫曼树需要n-1步,即合并n-1次,每次合并都出现一个新的结点,因此会出现n-1个新的结点,加上原有的n个结点,哈夫曼树共有2n-1个结点。哈夫曼树没有度数为1的分支结点。


哈夫曼编码:

将该二叉树每个结点的左分支标志“0”,右分支标志“1”,从根到每个叶节点形成“0”/“1”序列,作为叶节点对应的字符编码。

设计哈夫曼树编码_第8张图片

出现频率为0.5的字符编码为1000

出现频率为0.8的字符编码为1001

出现频率为1.4的字符编码为101

出现频率为2.2的字符编码为00

出现频率为2.3的字符编码为01

出现频率为2.8的字符编码为11


           解题完毕


你可能感兴趣的:(*【理论奠基】,———,自考)