已知下列字符 A、B、C、D、E、F、G 的权值分别为 3、12、7、4、2、8,11,试填写出其 对应哈夫曼树 HT 的存储结构的初态和终态。 请编写出代码
时间: 2023-11-15 09:07:11 浏览: 202
已知字符 A、B、C、D、E、F、G 的权值分别为 3、12、7、4、2、8,11,其对应哈夫曼树 HT 的存储结构的初态和终态如下:
初态:
HT.weight = 0;
for (int i = 1; i <= 7; i++) {
HT[i].weight = w[i-1];
HT[i].parent = 0;
HT[i].lchild = 0;
HT[i].rchild = 0;
}
终态:
HT.weight = 48;
for (int i = 1; i <= 7; i++) {
HT[i].weight = w[i-1];
HT[i].parent = 0;
HT[i].lchild = 0;
HT[i].rchild = 0;
}
for (int i = 8; i <= 13; i++) {
HT[i].weight = 0;
HT[i].parent = 0;
HT[i].lchild = 0;
HT[i].rchild = 0;
}
for (int i = 8; i <= 13; i++) {
int s1, s2;
select(HT, i-1, s1, s2);
HT[s1].parent = i;
HT[s2].parent = i;
HT[i].lchild = s1;
HT[i].rchild = s2;
HT[i].weight = HT[s1].weight + HT[s2].weight;
}
其中 select 函数为选择权值最小的两个结点的函数。
阅读全文