Huffman树及其编码(STL array实现)
Posted virgildevil
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Huffman树及其编码(STL array实现)相关的知识,希望对你有一定的参考价值。
这篇随笔主要是Huffman编码,构建哈夫曼树有各种各样的实现方法,如优先队列,数组构成的树等,但本质都是堆。
这里我用数组来存储数据,以堆的思想来构建一个哈弗曼树,并存入vector中,进而实现哈夫曼编码
步骤: 1生成哈夫曼树 (取最小权值树和次小权值树生成新树,排列后重新取树,不断重复)
2编码 (遵循左零右一的原则)
3解码(是编码的逆向,本文还未实现,日后有机会补充)
data.txt 测试数据:
5 |
结果:
下面贴代码:
1 #include <iostream> 2 #include <fstream> 3 #include <algorithm> 4 #include <vector> 5 #include <array> 6 7 using namespace std; 8 9 #define ARR_SIZE 100 //缓冲区大小 10 11 typedef struct Tree 12 { 13 int freq; 14 char key = ‘