堆与哈弗曼
哈弗曼编码,哈弗曼树
用来解决编码的方式以达到最佳效率。
哈弗曼提供的构造方法即每次从给定序列中选取两个最小元素,然后将这两个元素构成一个结点 的左右孩子,然后将父节点再插回原序列。
经过循环构造,最终形成最优哈弗曼树。
问题就是如何确定每次选取两个最小元素的方式,很显然最容易想到的就是每次插回去的时候再进行排序,但是是不是有一种方式可以在插回去的时候自动排序呢?
这时候就是堆该派上用场的时候了,利用之前对堆的描述,很显然最小堆是最佳人选。
最小堆构建哈弗曼树
哈弗曼特点: