//创建哈夫曼树
void HFMTree(HFMTree ht,int w[],int n){
for(i=1;i<=n;i++) ht[i]={w[i],0,0,0};//1~n号单元存放叶子节点,初始化
m=2*n-1;
for(i=n+1;i<=m;i++)ht[i]={0,0,0,0};//n+1~m号单元存放非叶子节点,初始化·
for(i=n+1;i<=m;i++){
//在ht[1]~ht[i-1]范围内选择两个parent为0,且weight最小的结点,其序号分别赋给s1,s2
select(ht,i-1,&s1,&s2);
ht[i].weight=ht[s1].weight+ht[s2].weight;
ht[s1].parent=i;
ht[s2].parent=i;
ht[i].LChild=ht[s1];
ht[i].RChild=ht[s2];
}
}
数据结构之树与二叉树
猜你喜欢
转载自blog.csdn.net/dujuancao11/article/details/104125403
今日推荐
周排行