哈夫曼树、哈夫曼编码详解

本文详细介绍了哈夫曼树的概念、构造过程及其在数据压缩中的应用——哈夫曼编码。通过贪心算法构建最优二叉树,确保权值较大的节点离根更近,从而降低带权路径长度。哈夫曼编码则根据哈夫曼树生成不同字符的唯一二进制编码,有效节省存储空间。文章最后鼓励读者自行实现哈夫曼编码的编码和解码过程。
摘要由CSDN通过智能技术生成

哈夫曼树介绍

hello,大家好,我是bigsai。本以为哈夫曼树、哈夫曼编码很难,结果很容易嘛!

哈夫曼树、哈夫曼编码很多人可能听过,但是可能并没有认真学习了解,今天这篇就比较详细的讲一下哈夫曼树。

首先哈夫曼树是什么?

哈夫曼树的定义:给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree),哈夫曼树是带权路径长度最短的树。权值较大的结点离根较近。

那这个树长啥样子呢?例如开始2,3,6,8,9权值节点构成的哈夫曼树是这样的:

image-20210616113835069

从定义和图上你也可以发现下面的规律:

  • 初始节点都在树的叶子节点上
  • 权值大的节点离根更近
  • 每个非叶子节点都有两个孩子(因为我们自下向上构造,两个孩子构成一个新树的根节点)

你可能会好奇这么一个哈夫曼树是怎么构造的,其实它是按照一个贪心思想和规则构造,而构造出来的这个树的权值最小。这个规则下面会具体讲解。

哈夫曼树非常重要的一点:WPL(树的所有叶结点的带权路径长度之和)。至于为什

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员bigsai

喝杯咖啡压压惊!

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

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

打赏作者

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

抵扣说明:

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

余额充值