1)步骤一:统计文本词频并获得权值
2)步骤二:通过获得的词频权值构建哈夫曼树
3)步骤三:通过哈夫曼树获得哈夫曼编码
4)步骤四:通过哈夫曼编码构建一个哈夫曼表(哈希表HashMap)key = 字符对应的ASUII码,value = 对应的哈夫曼编码
5)步骤五:通过哈夫曼编码获得哈夫曼编码字符串(就是将所有的哈夫曼编码字符串拼接)
6)步骤六:我们按照,每八个01串切割一次并转换成十进制数存入byte[ ]数组中,的规则去获得我们的压缩后的byte数组,即压缩完毕。这里我们需要注意如果最后剩下的01串小于8个那么我们就全部接收并转换
package 算法and数据结构.数据结构.哈夫曼树;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.*;
import java.util.List;
public class Node implements Comparable<Node>{
Node left ;
Node right;
String coding;
Integer weigh;
Byte date;
public Node(){
left = right = null;
coding = null ;
}
public Node(Integer val){
this.weigh =val;
}
public Node(Integer val,Byte date){
this.weigh =val;
this.date =date;
}
public Node(Node left , Node right){
this.left = left;
this.right = right;
}
public void pre(){
System.out.println("coding--> "+coding+" weight--> "+weigh+" isLeaf--> "+(this.left==null&&this.right==null));
if(this.left != null){
this.left.pre();
}
if(this.right != null){
this.right.pre();
}
}
@Override
public