读书人

初学者说:哈夫曼树及哈弗曼编码

发布时间: 2012-11-18 10:51:21 作者: rapoo

菜鸟说:哈夫曼树及哈弗曼编码

终于把哈夫曼树及哈弗曼编码弄好了~

?

哈夫曼树就是最优二叉树

?

和上次的搜索二叉树一样,哈夫曼树也有它特定的构造规则:

?

1.要把要存入哈夫曼树的数据分别创建一个树

?

2.把这些树按照大小顺序排序(在Java里面用优先队列PriorityQueue非常方便)

?

3.去两个最小的树,把他们合并在一块儿,并把合并后的树放回队列,如此递归往复……

?

4.把最后剩下的那个树设置为根节点。

?

这样,哈夫曼树就构造完成了~

?

检查方法就是把哈夫曼树的所有叶结点的编码都输出来,向左走编码为0,向右走编码为1(根据自己规定)

?

然后再根据编码把树画出来,检查~

?

首先是节点类:

?

输出的结果为:

?

4的哈夫曼编码为:000

1的哈夫曼编码为:0010

3的哈夫曼编码为:0011

4的哈夫曼编码为:010

5的哈夫曼编码为:011

6的哈夫曼编码为:100

6的哈夫曼编码为:101

6的哈夫曼编码为:110

7的哈夫曼编码为:111


恩~~没有错误~~

?

这样,一个最基本的哈夫曼树就完成了,下面就是利用这个树实现文件的压缩~加油~~~


恩~谢谢指教啦~~

读书人网 >编程

热点推荐