哈夫曼树&哈夫曼编码
哈夫曼树(最优二叉树)
-
具有最小带权路径长度的二叉树称为哈夫曼树
-
权值越大的叶子节点越靠近根节点
-
权值越小的叶子节点越远离根节点
-
总是将最小权值和次最小权值的两个节点合并,依次往上构造树,这样根节点的权值就是最小权值
-
假如哈夫曼树有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]

哈夫曼树是一种具有最小带权路径长度的二叉树,权值越大节点越靠近根部。通过合并最小权值节点构建,使得根节点权值最小。哈夫曼编码使用前缀编码,左分支代表0,右分支代表1,从根到叶的路径形成字符编码。
最低0.47元/天 解锁文章
1624

被折叠的 条评论
为什么被折叠?



