为编码而生,最小路权树:哈夫曼树

要解决的问题:

有时候编码字符时,每个字符编码的长度不一样,为了节省空间,肯定是频率越高的字符编码长度越短。

哈夫曼树是输入字符频率,输出编码的字符长度和编码序列。

 

算法:

总体来说,是将输入的频率作为结点值,然后构建一棵树,这棵树的叶子结点是频率结点(因为编码不能有重复覆盖现象,所以只能存在于叶子结点上)。

编码方法:找两个最小的合成树,树的根节点为两者和,然后将根节点的值加入,继续合成,最后合成的大树就是哈夫曼树。

示例过程:

 

 哈夫曼树,很神奇吧!

 

编码过程如图所示

 

posted @ 2022-08-06 21:19  srid  阅读(134)  评论(0)    收藏  举报