一、例子引出问题
参考书上P144-P149 。在我们计算成绩排名的时候,我们大部分人的成绩都在中等的,还有一小部分在极优和极差中,服从正态分布。因此出现了让有权重的树,为了将经常用到的判断放在前面,因此建立了最优二叉树。
二、存储结构
//赫夫曼树
typedef struct {
unsigned int weight;
unsigned int parent, lchild, rchild;
}HTNode,*HuffmanTree;
typedef char** HuffmanCode;//赫夫曼编码保存
三、操作
//赫夫曼树
typedef struct {
unsigned int weight;
unsigned int parent, lchild, rchild;
}HTNode,*HuffmanTree;
typedef char** HuffmanCode;//赫夫曼编码保存
void Select(HuffmanTree HT,int n,int &s1,int &s2){
//在赫夫曼数组中的[1,n]数组中寻找parent = 0&&权重最小的两个结点,返回到s1和s2
int min1 = 99998,indexMin1 = -1;
int min2 = 99999,indexMin2 = -1;
for (int i = 1; i <= n ; i++)
{
if (!HT[i].