哈夫曼树

(发现编码特别长,由于每个字母出现的频率不一样,考虑用用短的编码表示出现频率高的字母,用长的编码表示出现频率低的字母,这样可以缩短编码的长度)
统计字母出现的频率:
每次从集合中找2个频率最少的字母出来 ,用他们构成一个新结点,并入集合中。一直下去…
出现次数多的离根结点近,出现次数少离根节点远。
解码:根据编码串中的字母,沿着哈夫曼树扫描,扫描到字母。接着扫描下一个字母。
对一个字符的编码是另一个字符编码的前缀,会出现歧义。
哈夫曼编码中,没有一个字符的编码是另一个字符编码的前缀。
WPL:
特点:
- 权值越大的结点离根结点越近。
- 树中没有度为1的结点。(没有单分支结点)这类树又叫做正则(严格)二叉树。
- 树的带权路径长度最短
哈夫曼n叉树
构造哈夫曼3叉树:就是把每回选2个换成每回选3个。
不够3个结点,采取补权值为0结点的方式。
(显然0应该在最开始就串起来,因为这样0离根会较远,权值为0,就降低了带权路径)