lihuan6 2019-11-10 17:26 采纳率: 0%
浏览 846
已采纳

数据结构------树 能不能帮忙解答下

有一份电文中共使用 6个字符:a,b,c,d,e,f,它们的出现频率依次为: 0.2,0.17,0.14,0.12,0.18,0.19,回答下面的问题:
(1) 试构造一棵哈夫曼树(小值左子树,大值右子树)
(2) 给出各个字符的编码(按照左0右1编码)
(3) 求其加权路径长度WPL

  • 写回答

1条回答 默认 最新

  • 冉义 2019-11-10 19:05
    关注

    这个题目你只需要知道哈夫曼树就可以了
    首先将字符与加权一一对应,并将他们按权值大小排序:
    d 0.12 c 0.14 b 0.17 e 0.18 f 0.19 a 0.2
    哈夫曼树构造方法:
    假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
    (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
    (2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;
    (3)从森林中删除选取的两棵树,并将新树加入森林;
    (4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。
    ----来源百度百科
    (1)先挑选最小的两个节点,此处为dc,作为一棵树的左右叶子,用他们的和作为根节点,就够造成了一棵树。
    (2)以新产生的树为左子树,在未加入树中的节点在选择一个最小权值的节点,作为右叶子,构造一棵树。
    (3)重复(2),直至结束。
    然后根据左零右一得规则进行编码,即任意一个根节点,指向左孩子的树枝(姑且叫树枝)标注零,同理指向右孩子的标注一。如图

    图片说明

    确定编码:从根节点出发,到指定节点N所走过路径上的编码顺排,就构成了这个节点的编码,如a可以编码1指代。
    每个节点的编码图片中已经给出。
    求加权路径长度:题目中给出了每个节点的权值,可记为Wi(第i个节点的权重)你需要搞清楚普通路径长度是多少,根据够早的哈弗曼数,每一个节点到根节点的所要经过的边数称为路径长度,此处记为Li(第i个节点的...)
    加权路径长度即为全部节点LiWi的西格玛求和
    本题目构造的哈夫曼树WPL为
    0.2×1+0.19×2+0.18×3+0.17×4+0.14×5+0.12×5

    学过好久了,可能有纰漏,海涵。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能