哈夫曼树编码

哈夫曼树字符编码

问题描述

设一份电文中有不同出现频率的字符,为了提高电文的输入和翻译效率,必须有一套简短而又不会产生歧义的字符代码。试根据哈夫曼算法,对电文中的不同字符,构造出一棵哈夫曼树,对每个字符进行编码。

问题分析

本题只需要在一个简单的哈夫曼树的基础上,在节点信息中加入字符即可。实现后,出现频率高的字符会离根节点更近。也可以将出现频率改为其他信息,比如节点权重之类的。

代码

LetterTimes Class

由于普通的哈夫曼树的nodeValue是int类型,所以我们这里自定义一个包含字符letter和每个字符在电文中出现的频率times,目的是为了可以在后续的输出中,直接输出每个字符在树中的位置。

public class LetterTimes {
    private char letter;
    private int times;

    public LetterTimes(char letter, int times) {
        this.letter = letter;
        this.times = times;
    }

    public char getLetter() {
        return letter;
    }

    public int getTimes() {
        return times;
    }
}

TreeNode Class

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值