首页 > 试题广场 >

假设用于通信的电文由 5 个字母组成,字母在电文中出现的频率

[单选题]

假设用于通信的电文由 5 个字母组成,字母在电文中出现的频率分别为 2,4,5,7,8 根为第一层,用这 5 个字母设计哈弗曼树带权路径长度为()

  • 58
  • 105
  • 96
  • 84
哈夫曼树带权路经计算方法:
将树的节点值升序排序,由叶至根构建二叉树,每次选两个最小的节点连接,加法得到其父节点值。最终根节点权为0,向叶子节点依次递增1。
这道题是2*7+2*8+2*5+3*4+3*2=58
发表于 2020-08-27 11:51:18 回复(0)

构成赫夫曼树的步骤:

1)从小到大进行排序, 将每一个数据,每个数据都是一个节点 , 每个节点可以看成是一颗最简单的二叉树

2)取出根节点权值最小的两颗二叉树

3)组成一颗新的二叉树, 该新的二叉树的根节点的权值是前面两颗二叉树根节点权值的和

4)再将这颗新的二叉树,以根节点的权值大小 再次排序, 不断重复 1-2-3-4 的步骤,直到数列中,所有的数据都被处理,就得到一颗赫夫曼树

图片说明
不知道画得对不对。
拿出最小的2和4,组合一颗新的二叉树,根节点为6。
重新排序,得5,6,7,8。
拿出最小的5和6,组合一颗新的二叉树,根节点为11。
重新排序,得7,8,11。
拿出最小的7和8,组合一颗新的二叉树,根节点为15。
重新排序,得11,15。
组合11,15,根节点为26。

所以
我们发现,
从根节点到达节点2的路径为3,
从根节点到达节点4的路径为3,
从根节点到达节点5,节点7,节点8的路径为2,
计算
2*3+4*3+(5+7+8)*2 = 58
编辑于 2020-09-26 23:56:57 回复(1)