结点的权: 有某种现实含义的数值(如:表示结点的重要性等)
结点的带权路径长度: 从树的根到该结点的路径长度(经过的边数)与该结点上权值的乘积。例如:叶子节点为5= 结点值*路径长度 = 5 *3=15
树的带权路径长度: 树中所有叶结点的带权路径长度之和(WPL, Weighted Path Length)
【注意】:只算叶子结点!
在含有n个带权叶结点的二叉树中,其中带权路径长度(WPL)最小的二叉树称为哈夫曼树。也称最优二叉树。例如,上图的第2、3二叉树都是哈夫曼树。
给定n个权值分别为w1, w2,w3,…, wn的结点集合,如何构造哈夫曼树?
WPL = 23+43+52+71=6+12+10+7=35
特点:
原理:
哈夫曼编码可用于数据压缩。
固定长度编码——每个字符用相等长度的二进制位表示;
可变长度编码——允许对不同字符用不等长的二进制位表示;
若没有一个编码是另一个编码的前缀,则称这样的编码为前缀编码;
假设100题中有80题选C,10题选A,8题选B,2题选D
所有答案的二进制长度=80* 2+10* 2+8* 2+2* 2=200 bit。
构成二叉树:
即:A–00,B–01,C–10,D–11。
构成哈夫曼树是:结点A权值10,B值8,C值80,D值2。
即:C–0 ,A–10,B–111,D–110。(可变长度编码)
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_44775255/article/details/120821807
内容来源于网络,如有侵权,请联系作者删除!