哈夫曼编码压缩率计算_程序员必备——哈夫曼树的基本概念

问题: 给定N个带权值的叶子节点,如何构造出一个带权路径最小的二叉树?

答:哈夫曼树(Huffman Tree)

在数据结构理论中,哈夫曼树又称为最优树,相关的知识点还有哈弗曼编码等。在正式介绍哈夫曼树之前,需要知道下面的知识点:

f632fa3f75d9fc12889820ce6f1527c4.png

(1)节点路径

按照规定,将树中一个节点到另一个节点所经历的分支,称为节点路径,比如上图中节点A到节点E的路径为ABE。

(2)路径长度

根据上述“节点路径”的定义,将路径上的分支总数称为路径长度,比如上图中节点A到节点E的路径长度为2。

(3)节点的带权路径长度

根据上述“节点路径”和“路径长度”的定义,将从根节点到某节点的路径长度和节点权值的乘积,称为节点的带权路径长度。比如上图中节点A到节点D的路径长度为2,权值为8,则带权路径长度为2x8=16。

(4)树的带权路径长度

根据上述“节点的带权路径长度”的定义,将树中所有叶子节点的带权路径长度,称为树的带权路径长度。比如上图中,三个叶子节点C、D、E,对应的路径长度分别为1、2、2,对应的权值分别为4、8、3,则树的带权路径长度为:

79701df5f82956944afd1c432a626914.png

将上述概念形式化,可以使用下面的公式进行计算:

8b094a651ebc156d2987646671859a30.png

其中了表示路径长度,w表示权值,n表示叶子节点个数。

总结:

上文梳理了理解哈夫曼树所必须的基本概念,包含节点路径和路径长度等,下文将会讲解如何构造哈夫曼树。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值