【Huffman】哈夫曼树与哈夫曼编码

基本概念

1、路径和路径长度
在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。

2、结点的权及带权路径长度
若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。

3、树的带权路径长度
树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL。

4、哈夫曼树

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

算法思想

1、将所有节点看成独立的树,且左右子树都为空,没有父节点;

2、挑选两棵根节点权值最小的没有父节点的树,生成一个节点作为它们的父节点,父节点的权值等于他们的权值之和;

3、重复第2步,直到最后变成一棵树。

这里写图片描述

结论:从上图可以看出根节点的值为构建哈夫曼树所有节点的值和16 = 7+5+3+1。

哈夫曼编码

这里写图片描述

哈夫曼树应用

1、文件压缩(资料、音频、视频压缩)
2、节省带宽(微信预览图)

发布了150 篇原创文章 · 获赞 280 · 访问量 32万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 黑客帝国 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览