二叉树路径长度_哈夫曼树的构造_哈夫曼树路径长度(2)

电脑杂谈  发布时间:2017-02-21 02:25:08  来源:网络整理

压缩用到的其他类:

/**
 * 哈夫曼树中给叶子节点设置的编码类
 * @author 客
 *
 */
public class Code {
	//哈夫曼编码
	private String code = "";	
	/**
	 * 输出Code类对象的方法
	 */
	public String toString(){
		return "编码:"+code+"  长度:"+code.length();
	}
	/**
	 * 得到编码内容
	 * @return
	 */
	public String getCode() {
		return code;
	}
	/**
	 * 设置编码内容
	 * @param code
	 */
	public void setCode(String code) {
		this.code = code;
	}
}

/**
 * 哈夫曼树结点类
 * @author 客
 *
 */
public class hfmNode implements Comparable<hfmNode>{
	//字符的ASCII码值
	private int ascii;
	//字符的出现次数
	private int times;
	//当前结点的左子结点
	private hfmNode lChild;
	//当前结点的右子结点
	private hfmNode rChild;		
	/**
	 * 构造方法
	 * @param i ASCII的值
	 * @param times 文件中的出现次数
	 */
	public hfmNode(int ascii,int times){
		this.ascii = ascii;
		this.setTimes(times);
	}	
	/**
	 * 得到结点字符ASCII值得方法
	 * @return ASCII码值
	 */
	public int getAscii() {
		return ascii;
	}	
	/**
	 * 设置结点字符的ASCII值
	 * @param ascii
	 */
	public void setAscii(int ascii) {
		this.ascii = ascii;
	}	
	/**
	 * 得到当前结点字符出现次数的方法
	 * @return
	 */
	public int getTimes() {
		return times;
	}
	/**
	 * 设置当前结点字符出现次数的方法
	 * @param times
	 */
	public void setTimes(int times) {
		this.times = times;
	}
	/**
	 * 得到当前结点左孩子的方法
	 * @return 左子结点
	 */
	public hfmNode getlChild() {
		return lChild;
	}
	/**
	 * 设置当前结点左孩子的方法
	 * @param lChild
	 */
	public void setlChild(hfmNode lChild) {
		this.lChild = lChild;
	}
	/**
	 * 得到当前结点右孩子的方法
	 * @return 右子结点
	 */
	public hfmNode getrChild() {
		return rChild;
	}
	/**
	 * 设置当前结点右孩子的方法
	 * @param rChild
	 */
	public void setrChild(hfmNode rChild) {
		this.rChild = rChild;
	}
	/**
	 * 输出hfmNode类对象--哈夫曼结点的方法
	 */
	public String toString(){
		return "ascii="+(char)ascii+"             times="+times;
	}		
	/**
	 * 定义在队列中进行排序比较的属性
	 */
	public int compareTo(hfmNode o) {
		return times-o.getTimes();
	}	
}


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-33591-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...