HuffmanTree.h
#pragma once
const int MaxSize = 20;//哈夫曼树最大节点数
const int Max = 10;//哈夫曼树叶子节点数
//树节点
struct HFNode
{
int weight;//结点权值
int lchild, rchild;//孩子节点下标
int parent;//双亲结点下标
};
//初始叶子结点
struct LeafNode
{
int weight;//权值
char name;//叶子字符
char code[Max+1]="0";//存放编码
};
//类
class HuffmanTree
{
public:
HuffmanTree();
~HuffmanTree();
void printtest();
void code_tree() { coding(); }
void decode_tree() { decoding(); }
private:
void init();//初始化树节点,parent=rchlid=lchild=-1
void leaf_in();//输入叶子节点信息
bool create_tree();//建树
void select(int &i1, int &i2);
void coding();//为哈夫曼树编码
void decoding();
int n = 0;//叶子节点数
HFNode hufftree[MaxSize];//储存哈夫曼树结点信息
LeafNode leaf[Max];//储存叶子节点信息
};
HuffmanTree::HuffmanTree()
{
//初始化树节点,parent=rchlid=lchild=-1
init();
//输入叶子节点信息
leaf_in();
//建树
create_tree();
}
HuffmanTree::~HuffmanTree()
{
}
</