哈夫曼树的构造
1 哈夫曼树的概念
参考 : https://blog.csdn.net/wtfmonking/article/details/17150499
在许多应用中经常将树中的节点赋予一个权值 , 从根节点到该节点之间的路径长度与该节点上的权值的乘积称为该节点的带权路径长度(WPL) , 树中所有叶子节点的带权路径长度之和称为该树的带权路径长度。.其中no为叶节点的个数,wi和li分别表示第 i 个叶节点权值和根到它之间的路径长度 。
在 个带权叶节点构成的所有二叉树中,带权路径长度最小的称为哈夫曼树或者最优二叉树 。
如下图为一哈夫曼树示意图。
2、构造哈夫曼树
假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;
(3)从森林中删除选取的两棵树,并将新树加入森林;
(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。
如:对 下图中的六个带权叶子结点来构造一棵哈夫曼树,步骤如下:
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/91686.html