设abcdef六个字母出现的频度分别为8,3,9,7,10,11,求构造出的哈夫曼树
时间: 2023-12-07 08:03:28 浏览: 68
H3CE GB10-130题库
4星 · 用户满意度95%
首先按照频度从小到大排序,即a(8)、b(3)、c(9)、d(7)、e(10)、f(11)。
1. 取出频率最小的两个节点b(3)、d(7),构造一棵根节点权值为它们之和的二叉树,左子树为b(3),右子树为d(7)。得到第一层的两个节点b(3)和d(7),以及它们的父节点(10)。
```
b(3) d(7)
\ /
(10)
```
2. 取出频率最小的两个节点a(8)、b(3),构造一棵根节点权值为它们之和的二叉树,左子树为a(8),右子树为b(3)。得到第二层的两个节点a(8)和b(3),以及它们的父节点(11)。
```
b(3) d(7)
\ /
(10)
/ \
a(8) b(3)
\ /
(11)
```
3. 取出频率最小的两个节点e(10)、b(3),构造一棵根节点权值为它们之和的二叉树,左子树为e(10),右子树为b(3)。得到第三层的两个节点e(10)和b(3),以及它们的父节点(13)。
```
b(3) d(7)
\ /
(10)
/ \
a(8) b(3)
\ / \
(11) e(10)
\ /
(13)
```
4. 取出频率最小的两个节点c(9)、d(7),构造一棵根节点权值为它们之和的二叉树,左子树为c(9),右子树为d(7)。得到第四层的两个节点c(9)和d(7),以及它们的父节点(16)。
```
b(3) d(7)
\ / \
(10) c(9)
/ \ /
a(8) b(3) d(7)
\ / \ /
(11) e(10)
\ /
(13)
```
5. 取出频率最小的两个节点(10)、c(9),构造一棵根节点权值为它们之和的二叉树,左子树为(10),右子树为c(9)。得到第五层的两个节点(10)和c(9),以及它们的父节点(19)。
```
b(3) d(7)
\ / \
(10) c(9)
/ \ / \
a(8) b(3) d(7) (10)
\ / \ / / \
(11) e(10) c(9)
\ / /
(13) (19)
\ /
(23)
```
6. 取出最后剩余的两个节点(11)、(19),构造一棵根节点权值为它们之和的二叉树,左子树为(11),右子树为(19)。得到最终的哈夫曼树。
```
b(3) d(7)
\ / \
(10) c(9)
/ \ / \
a(8) b(3) d(7) (10)
\ / \ / / \
(11) e(10) c(9)
\ / /
(13) (19)
\ / \
(23) (11)
```
因此,构造出的哈夫曼树如上图所示。
阅读全文