哈弗曼编码

哈弗曼编码是哈夫曼树的一种应用,可以根据习惯统计等,将常用的字母和不常用的字母做成一个权重表。

利用这个权重表构造一颗哈夫曼树,从根节点到每个自己叶节点,每一次要去左结点就是0,每一次去右结点就是1。

这样可以得到每个字母的编码,例如1101,就是从根节点开始,右结点的右结点的左结点的右结点,做一个映射表。


编码的时候,可以通过映射表,将所有的串连成一个 0和1的二进制串,因为常用的被放在了前面,所以很短的二进制编码被用的多次,可以减少二进制串的长度。

解码的时候,遍历二进制串,对应遍历哈夫曼树,0去左,1去右,直到遇到叶节点,输出那个叶节点代表的字母。串继续遍历,哈夫曼树回到根节点从新遍历。

(每一个叶节点的路径都是独一无二的,叶节点之间也没有其他可通路径,所以不会有错码的问题)


首页 我的博客
粤ICP备17103704号