首页 > 其他 > 详细

学习记录:哈夫曼树

时间:2020-04-26 13:09:56      阅读:37      评论:0      收藏:0      [点我收藏+]

哈夫曼树

基本概念

  • 路径:在一棵树中, 从一个节点到另一个节点经过的所有结点,称为两个节点的路径。(图中淡蓝色为路径)

  • 路径长度:从出发节点到目标节点,每经过一个节点,路径长度+1。可以理解为两个节点中间的边的数量。(标记为边的数量)

  • 节点的权:每一个节点的权重。这个权重表示了这个节点的某种特性。(字母旁的数字)

  • 带权路径长度:表示从根节点到该节点的路径长度与该节点的权的乘积。(例:\(D=2*1=2\)

  • 树的带权路径长度:一个树上所有叶节点带权路径长度的和(\(Sum=2*1+2*2+2*3+2*4=20\)

技术分享图片

哈夫曼树的定义

哈夫曼树就是在给定叶节点的情况下,树的带权路径长度最小的树。也被称为“最优二叉树”。

构建过程

这里设要进行建树的数字为\(int\ num[]=\{2,3,5,6,7\};\)

  1. 将要建树的数字构建为优先队列,方便数据的处理。
  2. 取出优先队列的前两个数,将其组合为一个子树。
  3. 重复2直到队列中仅剩一个数,这时构建完成。

技术分享图片

代码实现


学习记录:哈夫曼树

原文:https://www.cnblogs.com/Salty-Fish/p/12778757.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!