赫夫曼树及编码问题(Huffman)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lj6020382/article/details/82145548

一、题目描述

       将数组转化为赫夫曼树。

二、解题思路

       赫夫曼树本质上是二叉树,赫夫曼树的每一个结点结构如下图:

       

       构建Huffman数组并初始化

       

       寻找最小值和次小值,并构建关系

       构建关系

       

三、注意事项

       1)为什么只循环array.length - 1次,因为只有n-1个非叶子结点 。

       

       2)构建关系时,子结点是最小值和次小值,父节点是array.length + j。

      3)打印赫夫曼树一般只打印顶层结点,即最后加和的那个值,如需打印整个赫夫曼树,需要按照二叉树的打印方式(队列)。

四、代码实现

       见我的github:Huffman

猜你喜欢

转载自blog.csdn.net/lj6020382/article/details/82145548