例:要传输的字符集D={C,A,S,T,;},字符出现频率分别为w={2,4,2,3,3},写出其哈夫曼编码。
方法:
第一步:将每个字符的频率作为权值,构造哈夫曼树;
![]()
第二步:将哈夫曼树每个结点的左分支标为0,右分支标为1;
第三步:把从根到每个叶子的路径上的标号连接起来,作为该叶子代表的字符的编码。
![]()
两个问题帮助你理解哈夫曼编码
1.为什么哈夫曼编码能够保证时前缀编码?
因为没有一片树叶是另一片树叶的祖先,所以每个叶子结点的编码就不可能是其他叶子结点编码的前缀。
2.为什么哈夫曼编码能够保证字符编码总长最短?
因为哈夫曼树的带权路径长度最短,故字符编码的总长最短。