数据结构之树与二叉树

//创建哈夫曼树
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];
    }
}
发布了94 篇原创文章 · 获赞 34 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/dujuancao11/article/details/104125403