有7个带权结点,其权值分别为4,7,8,2,5,16,30,试以它们为叶子结点构造一棵赫夫曼树
时间: 2024-05-15 13:13:10 浏览: 141
哈夫曼树的建立(根据输入的权值,建立一棵哈夫曼树)
赫夫曼树的构建过程如下:
1. 将结点按照权值从小到大排序,得到 2,4,5,7,8,16,30。
2. 从中选取权值最小的两个结点 2 和 4,构造一棵二叉树,其根节点的权值为 2 + 4 = 6,将这棵树看作一个结点,权值为 6。
3. 将上一步构造的结点和权值为 5 的结点组成新的二叉树,其根节点的权值为 5 + 6 = 11,将这棵树看作一个结点,权值为 11。
4. 将上一步构造的结点和权值为 7 的结点组成新的二叉树,其根节点的权值为 7 + 11 = 18,将这棵树看作一个结点,权值为 18。
5. 将上一步构造的结点和权值为 8 的结点组成新的二叉树,其根节点的权值为 8 + 18 = 26,将这棵树看作一个结点,权值为 26。
6. 将上一步构造的结点和权值为 16 的结点组成新的二叉树,其根节点的权值为 16 + 26 = 42,将这棵树看作一个结点,权值为 42。
7. 将上一步构造的结点和权值为 30 的结点组成新的二叉树,其根节点的权值为 30 + 42 = 72,将这棵树看作一个结点,权值为 72。
8. 构造完成,得到一棵赫夫曼树,其根节点的权值为 72。树的形态如下所示:
```
72
/ \
42 30
/ \
18 16
/ \
7 11
/ \
5 6
/ \
2 4
```
阅读全文