Write a program that performs Huffman encoding and compression using a binary tr
ID: 3540421 • Letter: W
Question
Write a program that performs Huffman encoding and compression using a binary tree. Huffman coding is an algorithm
devised by David A. Huffman of MIT in 1952 for compressing text data to make a file occupy a smaller number of
bytes. The idea of Huffman coding is to abandon the rigid 8-bits-per-character requirement of ASCII encoding and
use different-length binary encodings for different characters. The advantage of doing this is that if a character occurs
frequently in the file, such as the letter e, it could be given a shorter encoding (fewer bits), making the file smaller.
Your program should contain methods to read an input text file, count its characters, and use these counts to build a
Huffman tree for the characters by frequency. Use this Huffman tree to output an encoded and compressed version of
the file. Also write a method to read and decompress this file later. You may want to use helper classes for reading
and writing a file one bit at a time. You can find classes called BitInputStream and BitOutputStream at our
web site, http://buildingjavaprograms.com.