赫夫曼树的定义

  1. 赫夫曼编码是首个实用压缩编码方案.根据字符出现的频率利用赫夫曼编码可以构造出一个不等长的二进制,使用编码后电文长度最短,且保证不产生二义性.
  2. 赫夫曼树
    先把两颗二叉树简化成叶子节点带权的二叉树.(树节点之间的连线相关的数叫做权,weight).
    节点的路径长度: 从根节点到该节点的路径连接数.
    树的路径长度: 树中每个叶子节点的路径长度之和.
    节点带权路径长度: 节点路径长度和节点的权值的乘积
    树的带权路径长度:(WPL) 是树中所有叶子节点的带权路径长度之和.

WPL的值越小,说明构造出的二叉树的性能就越优.
赫夫曼树就是最优二叉树.

构造赫夫曼树:
在森林中选出两颗根节点权值最小的二叉树.
合并两颗选出的二叉树,增加一个新的节点作为新二叉树的根,权值为左右孩子的权值和.
在森林里找到最小的权值的树放在新根节点的左边或右边.

赫夫曼编码:
定长编码: 像ascii码,约定用8位来表示一个字符.
变长编码: 单个编码的长度允许不一致,可以根据整体出现频率来调节,比如赫夫曼编码.
前缀码: 所谓的前缀码,没有任何码字是其他码字的前缀码.

构建赫夫曼编码的五个过程:
build a priority queue
build a huffumanTree
build a huffumanTable
encode
decode

左子树用0表示,右子树用1表示.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值