首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-11-18 
菜鸟说:哈夫曼树及哈弗曼编码终于把哈夫曼树及哈弗曼编码弄好了~?哈夫曼树就是最优二叉树?和上次的搜索二

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

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

?

哈夫曼树就是最优二叉树

?

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

?

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


恩~~没有错误~~

?

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


恩~谢谢指教啦~~

热点排行