Practice Exercise 4.1.A
Huffman.java
import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;
public class Huffman {
static class Node {
public Node left;
public Node right;
public Integer frequency;
public Character character;
public Node() {
left = right = null;
frequency = 0;
character = null;
}
}
Node build(Map<Character, Integer> frequencies) {
// Write your code here
}
public static String decode(String encoding, Node current, Node code, String s) {
if (current.character != null)
return decode(encoding, code, code, s + current.character);
if (encoding.isEmpty())
return s;
if (encoding.charAt(0) == '0')
return decode(encoding.substring(1), current.left, code, s);
return decode(encoding.substring(1), current.right, code, s);
}
public static String decode(String encoding, Node code) {
return decode(encoding, code, code, "");
}
public static void main(String[] args) {
Map<Character, Integer> frequencies = new HashMap<>();
frequencies.put('a', 45000);
frequencies.put('b', 13000);
frequencies.put('c', 12000);
frequencies.put('d', 16000);
frequencies.put('e', 9000);
frequencies.put('f', 5000);
Huffman huffman = new Huffman();
Node code = huffman.build(frequencies);
System.out.println(Huffman.decode("001011101", code));
}
}Last updated