/*
代码说明:
1.读取文件中需进行哈夫曼编码的数据信息
2.构造生成单节点二叉树组 -> 森林
3.构造哈夫曼树
4.进行哈夫曼编码
5.输出对应数据及其编码
*/
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
const int MAX_N = 100;//最大容量
const int INF = 65535;//定义为无穷大
//哈夫曼树节点
class HNode
{
public:
char data;//节点值
double weight;//权重
int parent;//双亲节点
int lchild;//左孩子节点
int rchild;//右孩子节点
};
//哈夫曼编码节点
class HuffCode
{
public:
string code;//数据的编码
char huffinfo;//被编码数据
};
class HuffMan
{
public:
HuffMan(){}
~HuffMan(){}
// 函数名:CreateForest
// 返回值类型:void
// 参数:string filename
// 功能:
// 1.读取文件中数据信息
// 2.构建单节点二叉树组成的森林
//
void CreateForest(string filename)
{
int i = 0;
string str;
double fdata;
ifstream readfile;
readfile.open(filename);
//读取被编码数据
getline(readfile, str);
for (i = 0; i < (int)str.length(); i++)
{