赫夫曼树


欢迎大家访问我的个人博客:endeavorchuan.com

赫夫曼树的带权路径最短,所以又叫做最优二叉树。

带权路径长度

  • 结点:从该结点到根之间的路径长度×结点的权值
  • 树:所有叶子结点的带权路径长度之和

例:下图为有四个叶子结点的二叉树,a、b、c、d的权值分别为2、4、6、8。
在这里插入图片描述
结点带权路径长度分别为:A→2×2=4 B→2×4=8 C→3×6=18 D→2×8=16

树的带权路径长度为:WPL=4+8+18+16=46

赫夫曼树的构造

  1. 比较各个结点的权值
  2. 选择两个权值最小的结点构造二叉树,根的权值为两结点的权值之和
  3. 在待构造结点中再选择一个权值最小的结点,与根结点继续构造二叉树
  4. 重复2、3操作,直至所有结点都成功构造二叉树
  5. 构造出来的二叉树为赫夫曼树,其WPL的值是最小的

构造赫夫曼树举例:在这里插入图片描述

赫夫曼树特点:

  • 权值越大的结点,离根结点越近
  • 赫夫曼树中没有度为1的结点,又叫正则二叉树
  • 树的带权路径长度最短

赫夫曼编码

赫夫曼编码可极大的节省存储空间,如下例所示。
编码规则为左子树代表0,右子树代表1。在这里插入图片描述
如图所示的赫夫曼树中,字母所对应的赫夫曼编码依次为:

A→0     B→110     C→10     D→1110     E→1111

由此种方法产生的赫夫曼编码,是最短前缀码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个昵称被占用的川川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值