注册 登录
编程论坛 数据结构与算法

在哈夫曼树的构造算法中,遇到不懂的问题,求大牛帮帮忙!

a853052879 发布于 2015-11-28 20:59, 2128 次点击
在哈夫曼树的构造算法中,void CreateHT(HTNode ht[],int n)
{
    int i,j,k,lnode,rnode;
    double min1,min2;
    for(i = 0;i < 2*n-1;i++)
        ht[i].parent = ht[i].lchrld = ht[i].rchrld = -1;
    for(i = n;i < 2*n-1;i++)
    {
        min1 = min2 = 32767;
        lnode = rnode = -1;
        for(k = 0;k<i=1;k++)
            if(ht[k].parent == -1)
            {  if(ht[k].weight < min1)
            {  min2 = min1;rnode = lnode;
                           min1=ht[k].weight;lnode = k;
            }
            else if(ht[k].weight<min2)
            {
                min2 = ht[k].weight;rnode = k;
            }
       ht[i].weight = ht[lnode].weight + ht[rnode].weight;
       ht[i].lchrld = lnode;ht[i]rchrld = rnode;
       ht[lnode].parent = i;ht[rnode].parent = i;
            }
    }
其中的 if(ht[k].weight < min1)
            {  min2 = min1;rnode = lnode;
                           min1=ht[k].weight;lnode = k;
这段代码是什么意思,一直看不懂....求大牛指点迷津!!

[此贴子已经被作者于2015-11-29 12:33编辑过]

3 回复
#2
azzbcc2015-11-30 13:38
程序代码:
if (ht[k].weight < min2)
{
    min2 = ht[k].weight;
    rnode = k;
}
else if (ht[k].weight < min1)
{
    min2 = min1;
    rnode = lnode;
    min1 = ht[k].weight;
    lnode = k;
}


这样写,好理解
#3
a8530528792015-11-30 18:58
回复 2楼 azzbcc
不是,我想知道min1和min2代表什么意思
#4
azzbcc2015-11-30 19:15
最小权值和次小权值
1