题目
由5个权值为3,9,6,2,5的结点构成一棵哈夫曼树[1],则该树的带权路径长度[3]为()。A. 12B. 17C. 55D. 80
由5个权值为3,9,6,2,5的结点构成一棵哈夫曼树[1],则该树的带权路径长度[3]为()。
A. 12
B. 17
C. 55
D. 80
题目解答
答案
C. 55
解析
步骤 1:构建哈夫曼树
哈夫曼树是一种带权路径长度最短的二叉树。构建哈夫曼树的步骤如下:
1. 将所有节点按照权值从小到大排序。
2. 选择两个权值最小的节点,创建一个新节点,其权值为这两个节点权值之和。
3. 将新节点加入到节点集合中,重复步骤2,直到所有节点合并成一个树。
步骤 2:计算带权路径长度
带权路径长度是所有叶子节点的权值乘以其到根节点的路径长度之和。
步骤 3:计算具体数值
1. 将节点按权值排序:2, 3, 5, 6, 9。
2. 选择权值最小的两个节点2和3,创建新节点5,树结构为:
```
5
/ \
2 3
```
3. 将新节点5加入到节点集合中,排序后为:5, 5, 6, 9。
4. 选择权值最小的两个节点5和5,创建新节点10,树结构为:
```
10
/ \
5 5
/ \ / \
2 3 2 3
```
5. 将新节点10加入到节点集合中,排序后为:6, 9, 10。
6. 选择权值最小的两个节点6和9,创建新节点15,树结构为:
```
15
/ \
6 9
```
7. 将新节点15加入到节点集合中,排序后为:10, 15。
8. 选择权值最小的两个节点10和15,创建新节点25,树结构为:
```
25
/ \
10 15
/ \ / \
5 5 6 9
/ \ / \ / \
2 3 2 3 6 9
```
9. 计算带权路径长度:2*3 + 3*3 + 5*2 + 6*2 + 9*2 = 6 + 9 + 10 + 12 + 18 = 55。
哈夫曼树是一种带权路径长度最短的二叉树。构建哈夫曼树的步骤如下:
1. 将所有节点按照权值从小到大排序。
2. 选择两个权值最小的节点,创建一个新节点,其权值为这两个节点权值之和。
3. 将新节点加入到节点集合中,重复步骤2,直到所有节点合并成一个树。
步骤 2:计算带权路径长度
带权路径长度是所有叶子节点的权值乘以其到根节点的路径长度之和。
步骤 3:计算具体数值
1. 将节点按权值排序:2, 3, 5, 6, 9。
2. 选择权值最小的两个节点2和3,创建新节点5,树结构为:
```
5
/ \
2 3
```
3. 将新节点5加入到节点集合中,排序后为:5, 5, 6, 9。
4. 选择权值最小的两个节点5和5,创建新节点10,树结构为:
```
10
/ \
5 5
/ \ / \
2 3 2 3
```
5. 将新节点10加入到节点集合中,排序后为:6, 9, 10。
6. 选择权值最小的两个节点6和9,创建新节点15,树结构为:
```
15
/ \
6 9
```
7. 将新节点15加入到节点集合中,排序后为:10, 15。
8. 选择权值最小的两个节点10和15,创建新节点25,树结构为:
```
25
/ \
10 15
/ \ / \
5 5 6 9
/ \ / \ / \
2 3 2 3 6 9
```
9. 计算带权路径长度:2*3 + 3*3 + 5*2 + 6*2 + 9*2 = 6 + 9 + 10 + 12 + 18 = 55。