创建哈夫曼树
经过这一步后,树的集合里就有n个叶子结点
不断从树集合里取出两个权重最小的树合并成一个新树,这时候就是两个根节点并成兄弟到一个新的根节点下,这个新的根节点的权重是两个兄弟的权重和,之后再把
每次合并的时候,最终结果都是两个根节点变到1个根节点,也就是说每次合并都会使集合里减少一个根节点,而最后是要保留一个根节点,所以只需要合并n次就行
之前想的是,如果两个都是新的,那是不是可能就会减少一次合并的次数;
但实际上
哈夫曼编码就是出现频率高的字母采用段编码,频率小用长编码
前缀码,每个字母的编码都不是其它字母编码的前缀码
中间结点只需要权重,叶子结点要字母和权重
哈夫曼解码
这里不会考虑到
每个叶节点的权重*路径和,中间节点的带权路径长度和
5*3+9*2+12*2=15+18+24=33+24=