哈弗曼树编码的问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 22:11:41
程序如下:
int static hc[num][len]; //用于存储编码
nodes[nod]; //哈夫曼树元素集合
for(i=0;i<num;i++)
{
j=len-1;
for(m=i,n=nodes[i].parent;m!=-1;m=n,n=nodes[n].parent)
{
if(nodes[n].lchild==m)
{
hc[i][j]=0; //左孩子编码0
}
if(nodes[n].rchild==m)
{
hc[i][j]=1; //右孩子编码1
}
j--;
}
}
不明白这个二维数组为什么能完成编码?
并且为什么左孩子就是hc[j][i],右孩子就是hc[i][j]??

首先hc是用于存储哈弗曼编码的。哈弗曼树编码时规定左0右1.
nodes中存在才是哈夫曼树
首先遍历树,然后用
if(nodes[n].lchild==m)
{
hc[i][j]=0; //左孩子编码0
}
if(nodes[n].rchild==m)
{
hc[i][j]=1; //右孩子编码1
}
判断