当前位置:C++技术网 > 资讯 > 数据结构笔记分享:6 哈夫曼树的构造过程

数据结构笔记分享:6 哈夫曼树的构造过程

更新时间:2015-11-18 09:59:46浏览次数:1+次

    偶然间在网站上看见了一篇关于哈夫曼树的文章里面主要讲了哈夫曼树的存储方式,当然对于初学者来讲,这个绝对看不懂,因为压根不知道哈夫曼树什么回事,所以,下面我来详细讲一下哈夫曼树的构造过程。


你首先需要知道

1.一般地,权越大的叶子离根越近,则二叉树的加权路径长度越小。

2.哈夫曼给出了求具有最小加权路径长度二叉树的算法,称为哈夫曼算法。

3.用哈夫曼算法构造的二叉树称为哈夫曼树。


哈夫曼算法可以描述如下:

⑴ 用给定的一组权值{w1,w2 ,…,wn}生成一个森林F={T1,T2,…,Tn},其中每棵二叉树Ti只有一个权值为wi的根结点,其左、右子树均为空。

⑵ 从F中选择两棵根结点权值最小的树作为新树根的左、右子树,新树根的权值是左、右子树根结点的权值之和。(约定左子树根权值小)

⑶ 从F中删除这两棵树,另将新二叉树加入F中。

⑷ 重复⑵和⑶,直到F中只包含一棵树为止。此树即为哈夫曼树。

下面是简单的两个哈夫曼树构造过程: