构造哈夫曼树
typedef struct {
int weight;
int parent,lchild,rchild;
}HuffmanTNode;
void CreatHuffmanTree(HuffmanTNode *ht,int n){
int i;
if (n<=1) return;
HuffmanTNode ht[2n];//申请数组空间
for(i=1;i<=2n-1;i++){//初始化结点元素
ht[i].lchild=0;
ht[i].rchild=0;
ht[i].parent=0;
}
for(i=1;i<=n;i++){
scanf("%d",ht[i].weight);
}
for(i=n+1;i<=2n-1;i++){
Select(ht,i-1,s1,s2);//选择最小的两个结点返回;
ht[i].lchild=s1;
ht[i].rchild=s2;
ht[s1].parent=i;
ht[s2].parent=i;
ht[i].weight=ht[s1].weight+ht[s2].weight;
}
}