快速画出哈夫曼树/霍夫曼树/最优树

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

哈夫曼树(霍夫曼树)又称为最优二叉树.

n个叶子结点的哈夫曼树共有几个结点 ?

Huffman 树是所谓的正则二叉树,只有度为0和度为2的结点
根据二叉树的性质,n0 = n2 + 1,因此该树中度为2的结点数量为n-1
于是一共有2n-1个结点

 一般用来减少程序整体运行时间,将权重大的放在前面。

 

下面我们以【5、8、4、11、9、13】为例来画出哈夫曼树(数字大小代码权重大小,越大的权重越大)

方法/步骤

  1. 1

    第一步:按从小到大排序。

     

    【5、8、4、11、9、13】→【4、5、8、9、11、13】

    快速画出哈夫曼树/霍夫曼树/最优树

  2. 2

    第二步:选最小两个数画出一个树,最小数为4和5。

    给定的4、5、8、9、11、13为白色, 红色的9为4+5,与给定的白9无关,新序列为:【红9(含子节点4、5)、8、9、11、13】

    快速画出哈夫曼树/霍夫曼树/最优树_第1张图片

  3. 3

    之后一直重复第一、第二步:排序然后取两个最小值。实际就是一个递归过程

     

       排序:

    快速画出哈夫曼树/霍夫曼树/最优树_第2张图片

  4. 4

    取两个最小数8和9:

    快速画出哈夫曼树/霍夫曼树/最优树_第3张图片

  5. 5

    排序:

    快速画出哈夫曼树/霍夫曼树/最优树_第4张图片

  6. 6

    取两个最小数9和11:

    快速画出哈夫曼树/霍夫曼树/最优树_第5张图片

  7. 7

    排序,然后取两个最小数13和17:

    快速画出哈夫曼树/霍夫曼树/最优树_第6张图片

  8. 8

    取两个最小数20和30:

    快速画出哈夫曼树/霍夫曼树/最优树_第7张图片

转载于:https://my.oschina.net/betayuan/blog/1547513

你可能感兴趣的:(快速画出哈夫曼树/霍夫曼树/最优树)