哈夫曼树&哈夫曼编码
哈夫曼树(最优二叉树)
-
具有最小带权路径长度的二叉树称为哈夫曼树
-
权值越大的叶子节点越靠近根节点
-
权值越小的叶子节点越远离根节点
-
总是将最小权值和次最小权值的两个节点合并,依次往上构造树,这样根节点的权值就是最小权值
-
假如哈夫曼树有n0个叶子节点,那么这棵树的总结点个数n=2*n0-1
typedef struct{
int weight;
int parent;
int lchild;
int rchild;
}HNode;
void Create_HuffMTree(HNode HFMTree[],int n){
//n为叶子结点个数
int x1,x2; //x1和x2存储最小和次最小权值
int m1,m2; //m1和m2存储位置
int i,j;
for(i=0;i<2*n-1;++i){
//HFMTree 初始化
HFMTree[i].weight=0;
HFMTree[i].lchild=-1;
HFMTree[i]