import java.util.HashMap; import java.util.*; public class Main { public static void test(String text) { Map zahlen = Zählen.countEachLetter(text); Node wurzel = Node.erstellen(zahlen); System.out.println(); System.out.println("Pre-Order Baum:"); printBaum(wurzel); System.out.println(); System.out.println("Anzahl der Zeichen:"); Zählen.printZahl(zahlen); System.out.println(); System.out.println("Binärcode der Zeichen:"); codes(text); System.out.println(); decodierungBaum(codierung(text,wurzel), wurzel); } public static void printBaum(Node baum) { if(baum == null)return; System.out.println("Buchstabe: " + baum.getBuchstabe() + ", Anzahl: " + baum.getAnzahl()); printBaum(baum.getLeft()); printBaum(baum.getRight()); } public static void codes(String text) { Node wurzel = Node.erstellen(Zählen.countEachLetter(text)); HashMap codes = new HashMap(); generieren(codes,wurzel,""); for (var entry : codes.entrySet()) { System.out.println("->" + entry.getKey() + ", Code: " + entry.getValue()); } } public static void generieren(HashMap 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 String codierung(String text, Node wurzel) { HashMap codes = new HashMap(); if(wurzel.getLeft() == null && wurzel.getRight() == null) { codes.put(wurzel.getBuchstabe(), "0"); } else { generieren(codes,wurzel,""); } String code = ""; for (int i=0; i