zoukankan      html  css  js  c++  java
  • 哈夫曼树的构造

    摘抄自:哈夫曼树以及哈夫曼编码的构造步骤

    因为做题的时候在这里卡住了,故学习一下,通俗方法:一直找最小的两个值

    注意:哈夫曼树并不唯一,但带权路径长度一定是相同的。

    (1)8个结点的权值大小如下:

    img
    (2)从19,21,2,3,6,7,10,32中选择两个权小结点。选中2,3。同时算出这两个结点的和5。

    img
    (3)从19,21,6,7,10,32,5中选出两个权小结点。选中5,6。同时计算出它们的和11。

    img
    (4)从19,21,7,10,32,11中选出两个权小结点。选中7,10。同时计算出它们的和17。
    (BTW:这时选出的两个数字都不是已经构造好的二叉树里面的结点,所以要另外开一棵二叉树;或者说,如果两个数的和正好是下一步的两个最小数的其中的一个,那么这个树直接往上生长就可以了,如果这两个数的和比较大,不是下一步的两个最小数的其中一个,那么就并列生长。)img

    (5)从19,21,32,1117中选出两个权小结点。选中11,17。同时计算出它们的和28。

    img
    (6)从19,21,32,28中选出两个权小结点。选中19,21。同时计算出它们的和40。另起一颗二叉树。

    img
    (7)从32,2840中选出两个权小结点。选中28,32。同时计算出它们的和60。

    img
    (8)从 4060中选出两个权小结点。选中40,60。同时计算出它们的和100。 好了,此时哈夫曼树已经构建好了。

    img

  • 相关阅读:
    自己回答自己的问题
    作业5 四则运算 测试与封装 5.1 5.2
    2015430 加法阶段一的封装测试
    20150423 提问2
    Java 泛型中的<? super T>和<? extends T>
    ssh 查看端口占用
    Java 回调
    SpringMVC4+MyBaits3配置
    Selenium 远程执行和监听类
    Intellij idea主题
  • 原文地址:https://www.cnblogs.com/wangzheming35/p/13746638.html
Copyright © 2011-2022 走看看