哈夫曼树的构造步骤(哈夫曼编码压缩率公式)
- 开发语言
- 2023-08-13
- 88
大家好,关于哈夫曼树的构造步骤很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于哈夫曼编码压缩率公式的知识点,相信应该可以解决大家的一些困惑和问题,如果碰...
大家好,关于哈夫曼树的构造步骤很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于哈夫曼编码压缩率公式的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
为什么哈夫曼树不存在度为一的结点
为什么哈夫曼树不存在度为1的结点,要从哈夫曼树的构建规则分析。
哈夫曼树最初是一堆离散的带权叶子结点,每个叶子都视为森林的一棵树。不断从森林中找到权值最小的两棵树,为它们添加一个共同的父结点,父结点的权值为两个子树的权值之和,然后继续寻找最小权值的两棵树组合。
可见,每组合一次都会新增一个分支结点,该分支结点总是包括左右子树,即它的度为2。因此,哈夫曼树不存在度为1的结点。
哈夫曼树带权路径算法
树的带权路径长度=所有叶子节点带权路径长度之和
即所有叶子节点的权值乘以该叶子节点所在的层次(第一层为0)之和
树的带权路径长度:为树中所有叶子节点的带权路径长度之和。
对某一个叶子节点他的带权路径长度就是从根节点到他之间连线的最短条数乘以他的权值。
一般的,我们是可以用常规的构造哈夫曼树求带权路径长度。
树的带权路径长度(WeightedPathLengthofTree,简记为WPL)
计算结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积。
带权路径长度WPL(WeightedPathLength)最小的二叉树,也称为最优二又树。
构造哈夫曼树的办法是:在W中选出两个权小结点,并同时计算出它们的和,如果两个数的和正好是下一步的两个最小数的其中的一个,那么这个树直接往上生长就可以了,如果这两个数的和比较大,不是下一步的两个最小数的其中一个,那么就并列生长。
哈夫曼树有5个叶子结点,共有多少节点
在哈夫曼树中,叶子节点是指没有子节点的节点,而非叶子节点是指有至少一个子节点的节点。
对于一个哈夫曼树,它的叶子节点数目(n)和总节点数目(m)之间的关系可以通过以下公式得到:
m=2n-1其中,n表示叶子节点的数目,m表示总节点的数目。
根据题目中给出的条件,哈夫曼树有5个叶子节点,那么根据上述公式,总节点数目为:
m=2*5-1=10-1=9
所以,哈夫曼树共有9个节点。
{7,2,8,4,16,3,9}构造出哈夫曼树。并计算带权路径
7个权值是72841639(1)从小到大排序23478916(这是有序序列)(2)每次提取最小的两个结点,取结点2和结点3,组成新结点N5,其权值=2+3=5,取数值较小的结点作为左分支,结点2作为左分支,而结点3就作为右分支.(3)将新结点N5放入有序序列,保持从小到大排序:4N578916(4)重复步骤(2),提取最小的两个结点,结点4与N5组成新结点N9,其权值=4+5=9,结点4的数值较小,作为左分支,N5就作为右分支.(5)将新结点N9放入有序序列,保持从小到大排序:789N916[注意:新结点N9排在原有结点9的后面](6)重复步骤(2),提取最小的两个结点,结点7与结点8组成新结点N15,其权值=7+8=15,结点7的数值较小,作为左分支,结点8就作为右分支.(7)将新结点N15放入有序序列,保持从小到大排序:9N9N1516(8)重复步骤(2),提取最小的两个结点,结点9与N9组成新结点N18,其权值=9+9=18,结点9作为左分支,N9就作为右分支.(9)将新结点N18放入有序序列,保持从小到大排序:N1516N18(10)重复步骤(2),提取最小的两个结点,N15与结点16组成新结点N31,其权值=15+16=31,N15的数值较小,作为左分支,结点16就作为右分支.(11)将新结点N31放入有序序列,保持从小到大排序:N18N31(12)重复步骤(2),提取剩下的两个结点,N18与N31组成新结点N49,其权值=18+31=49,数值较小的N18作为左分支,N31就作为右分支.最后得到哈夫曼树:N49/\N18N31/\/\9N9N1516/\/\4N578/\23带权路径长度(WPL):根结点N49到结点16的路径长度是2,结点16的带权路径长度是16*2根结点N49到结点9的路径长度是2,结点9的带权路径长度是9*2根结点N49到结点8的路径长度是3,结点8的带权路径长度是8*3根结点N49到结点7的路径长度是3,结点7的带权路径长度是7*3根结点N49到结点4的路径长度是3,结点4的带权路径长度是4*3根结点N49到结点3的路径长度是4,结点3的带权路径长度是3*4根结点N49到结点2的路径长度是4,结点2的带权路径长度是2*4所以,哈夫曼树的带权路径长度(WPL)等于16*2+9*2+8*3+7*3+4*3+3*4+2*4=127附:哈夫曼编码:规定哈夫曼树的左分支代表0,右分支代表1.从根结点N49到结点16,连续经历两次右分支,编码就是11从根结点N49到结点9,连续经历两次左分支,编码就是00从根结点N49到结点8,先经历右分支,再左分支,最后右分支,编码就是101如此类推,可以得出所有的结点的哈夫曼编码:权值16:11权值9:00权值8:101权值7:100权值4:010权值3:0111权值2:0110
哈夫曼树全路径长度
先构造哈夫曼树:17/\89/\36/\12所以带权路径长度WPL=(1+2)*3+6*2+8*1=29
14个值组成哈夫曼树共有多少节点
14个带权叶子组成的哈夫曼树,共有27个结点。
根据哈夫曼树的构造规则,最开始这14个结点全是离散的,可看为14棵单独的树。不断找到权值最小的两棵树,添加一个度为2的分支结点把它们组合起来,直到最后只有一棵树。
因此对于哈夫曼树,只有度为0的叶子和度为2的结点,且二叉树中总是度为0的结点比度为2的结点多一个,因此14个叶子结点的哈夫曼树有13个度为2的结点,它的总结点数是14+13=27个。
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!
本文链接:http://xinin56.com/kaifa/7411.html