给定权集w={3,12,7,5,6,15,21},构造哈曼夫树,如果采用一堆
时间: 2023-09-17 11:02:20 浏览: 95
哈夫曼树(Huffman Tree)是一种用于数据压缩的树形结构。根据给定的权集w={3,12,7,5,6,15,21},我们可以通过以下步骤构造哈夫曼树:
1. 将所有权值看作独立的树或子树。
2. 在权值中选择两个最小的树(即最小的两个数字)。
3. 将这两个最小的树合并成一个新的树,并且新的树的权值为这两个最小树的权值之和。
4. 重复步骤2和3,直到只剩下一个树。
5. 最后得到的这个树就是哈夫曼树。
具体操作如下:
步骤1:w={3,12,7,5,6,15,21},每个权值作为一个树,得到初始集合:{3, 12, 7, 5, 6, 15, 21}。
步骤2:选择最小的两个权值,为3和5。
步骤3:将3和5构造成一棵新的树,新树的权值为3+5=8。
步骤4:得到新的集合:{8, 12, 7, 6, 15, 21}。
重复步骤2和3,直到只剩下一个树。
步骤2:选择最小的两个权值,为6和7。
步骤3:将6和7构造成一棵新的树,新树的权值为6+7=13。
步骤4:得到新的集合:{13, 8, 12, 15, 21}。
步骤2:选择最小的两个权值,为8和12。
步骤3:将8和12构造成一棵新的树,新树的权值为8+12=20。
步骤4:得到新的集合:{20, 13, 15, 21}。
步骤2:选择最小的两个权值,为13和15。
步骤3:将13和15构造成一棵新的树,新树的权值为13+15=28。
步骤4:得到新的集合:{28, 20, 21}。
步骤2:选择最小的两个权值,为20和21。
步骤3:将20和21构造成一棵新的树,新树的权值为20+21=41。
步骤4:得到新的集合:{41, 28}。
步骤2:选择最小的两个权值,为28和41。
步骤3:将28和41构造成一棵新的树,新树的权值为28+41=69。
最后剩下的这棵树就是哈夫曼树,其根节点的权值为69,叶子节点的权值为给定的权集w={3,12,7,5,6,15,21}中的数字。
阅读全文