字母abcdefgh,他们的权重为27,19,12,6,35,3,21,22 构造哈夫曼树
时间: 2023-09-16 20:11:10 浏览: 132
首先,将所有的字母和权重存储在一个列表中,然后按照权重从小到大的顺序,将每个字母看作一个单独的节点。然后,从列表中取出权重最小的两个节点,将它们合并成一个新的节点,并将它们的权重相加作为新节点的权重。将新节点插入列表中,继续按照权重从小到大排序。重复这个过程,直到只剩下一个节点,这个节点就是哈夫曼树的根节点。
按照这个过程,对于字母abcdefgh,他们的权重为27,19,12,6,35,3,21,22,构造哈夫曼树的过程如下:
1. 将所有字母看作单独的节点,按照权重排序:(c, 3), (d, 6), (b, 12), (a, 27), (h, 22), (g, 21), (f, 35), (e, 19)
2. 取出权重最小的两个节点,合并成一个新节点,插入列表中:(c, 3), (d, 6), (b, 12), (a, 27), (h, 22), (g, 21), (e+f, 54)
3. 继续取出权重最小的两个节点,合并成一个新节点,插入列表中:(c, 3), (d, 6), (b, 12), (a, 27), (e+f+g+h, 118)
4. 继续取出权重最小的两个节点,合并成一个新节点,插入列表中:(c+d, 9), (b, 12), (a, 27), (e+f+g+h, 118)
5. 继续取出权重最小的两个节点,合并成一个新节点,插入列表中:(c+d+b, 21), (a, 27), (e+f+g+h, 118)
6. 继续取出权重最小的两个节点,合并成一个新节点,插入列表中:(c+d+b+a, 48), (e+f+g+h, 118)
7. 最后取出唯一的节点,即为根节点:(c+d+b+a+e+f+g+h, 166)
因此,构造出的哈夫曼树如下图所示:
(c+d+b+a+e+f+g+h, 166)
/ \
(c+d+b+a, 48) (e+f+g+h, 118)
/ \ / \
(c+d, 9) (b, 12) (e+f, 54) (h, 22)
/ \ / \
(c, 3) (d, 6) (e, 19) (f, 35)
阅读全文