Пример #1
0
 public CodeMap getHuffmanCodeMap() {
   HuffmanNode[] array = new HuffmanNode[26];
   HuffmanNode tempnode = null;
   int aval = (int) 'a';
   for (int i = 0; i < 26; i++) {
     array[i] = new HuffmanNode(freq[i]);
     array[i].setLetter((char) (aval + i));
   }
   Arrays.sort(array); // array is in ascending order based on frequency
   while (array[1].freq != -64) // Want to get down to one node in array
   {
     tempnode = new HuffmanNode((array[0].freq + array[1].freq));
     tempnode.setLeft(array[0]);
     tempnode.setRight(array[1]);
     array[0] = tempnode;
     array[1].freq = -64;
     Arrays.sort(array);
   }
   CodeMap map = new CodeMap();
   return getCode(array[0], "", map);
 }
Пример #2
0
 private CodeMap getCode(HuffmanNode node, String code, CodeMap map) {
   node.code = code;
   String temp;
   if (node.left != null) {
     // Put in a 0
     temp = code.concat("0");
     getCode(node.left, temp, map);
   }
   if (node.right != null) {
     // Put in a 1
     temp = code.concat("1");
     getCode(node.right, temp, map);
   }
   if (node.right == null && node.left == null) {
     // Create the CodeMap
     map.assignCode(node.letter, node.code);
   }
   return map; // Shouldn't happen
 }