赫夫曼树

从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称做路径长度

树的路径长度就是从树根到每一个结点的路径长度之和。

结点的带权路径长度为从该结点到树根之间的路径长度与结点上权的乘积。

树的带权路径长度为树中所以叶子结点的带权路径长度之和。

带权路径长度WPL最小的二叉树称做赫夫曼树,也称最优二叉树


构造赫夫曼树:

(1)根据给定的n个权值{w1, w2, ......, wn}构成n棵二叉树的集合F={T1, T2, ......,Tn},其中每棵二叉树T1中只有一个带权为w1根结点,其左右子树为空。

(2)在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,而且置新的二叉树的根结点的权值为左右子树上根结点的权值之和。

(3)在F中删除这两棵树,同时将新得到的二叉树加入到F中。

(4)重复2和3步骤,直到F只含一棵树为止。这棵树便是赫夫曼树。


若要设计长短不等的编码,则必须是任一字符的编码都不是另一个字符的编码的前缀,这种编码称做前缀编码。

赫夫曼编码:

一般的,设需要编码的字符集为{d1, d2, ......,dn},各个字符在电文中出现的次数或者频率集合为{w1, w2, ...., wn},以d1, d2, ......,dn作为叶子结点,以w1, w2, ...., wn作为相应叶子结点的权值来构造一棵赫夫曼树。规定赫夫曼树的左分支代表0,右分支代表1,则从根结点到叶子结点所经过的路径分支组成的0和1的序列便成为该结点对于字符的编码,这就是赫夫曼编码。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值