66 lines
1.6 KiB
Java
66 lines
1.6 KiB
Java
import java.util.HashMap;
|
|
import java.util.*;
|
|
|
|
public class Main
|
|
{
|
|
public static void codes(String text)
|
|
{
|
|
Node wurzel = Node.erstellen(Zählen.countEachLetter(text));
|
|
HashMap<Character, String> codes = new HashMap<Character, String>();
|
|
generieren(codes,wurzel,"");
|
|
|
|
for (var entry : codes.entrySet())
|
|
{
|
|
System.out.println("->" + entry.getKey() + ", Code: " + entry.getValue());
|
|
}
|
|
}
|
|
|
|
public static void generieren(HashMap<Character, String> codes, Node node, String code)
|
|
{
|
|
if(node == null)return;
|
|
if(node.getLeft() == null && node.getRight() == null)
|
|
{
|
|
codes.put(node.getBuchstabe(), code);
|
|
return;
|
|
}
|
|
generieren(codes, node.getLeft(), code + "0");
|
|
generieren(codes, node.getRight(), code + "1");
|
|
}
|
|
|
|
public static void codierung(String text)
|
|
{
|
|
Node wurzel = Node.erstellen(Zählen.countEachLetter(text));
|
|
HashMap<Character, String> codes = new HashMap<Character, String>();
|
|
|
|
if(wurzel.getLeft() == null && wurzel.getRight() == null)
|
|
{
|
|
codes.put(wurzel.getBuchstabe(), "0");
|
|
}
|
|
else
|
|
{
|
|
generieren(codes,wurzel,"");
|
|
}
|
|
String code = "";
|
|
for (int i=0; i<text.length();i++)
|
|
{
|
|
char b = text.charAt(i);
|
|
String c = codes.get(b);
|
|
code += c;
|
|
}
|
|
System.out.println("Huffman-Codierung: " + code);
|
|
}
|
|
|
|
//public String decodierung(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|