一、哈夫曼树
1、 定义:
给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
2、基本概念:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5dc9a446ab0f4faf7c8aaad632562085.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9a7d9022aabf17e56cd3ad29df9897b9.png)
3、构造哈夫曼树
给定下图中所示结点,构造一颗哈夫曼树,如下图所示
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4d24ea8f27cc5d4d47b2ba07f4df1c9f.png)
4.哈夫曼编码
如下图所示,演示了哈夫曼树的编码规则,右子树为1,左子树0打头;
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/502a059a6fe55b520817f9a76a927a25.png)
左侧为哈夫曼树,右侧不是;
右侧哈夫曼树解码时存在异议,可以分解出多颗树,左侧只能一颗;
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8e88d2de6052cab63cd7ce839aba02dc.png)
哈夫曼编码的作用
哈夫曼编码用于数据压缩,本质就是把字符重新编码,使其占用空间更小;
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/da5cc01fa1c78547b3931dd3cda3ab1b.png)