diff --git a/Main.java b/Main.java index 1cda837..2dda730 100644 --- a/Main.java +++ b/Main.java @@ -34,15 +34,21 @@ public class Main printBaum(baum.getLeft()); printBaum(baum.getRight()); } - - - + 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,""); - + + if(wurzel.getLeft() == null && wurzel.getRight() == null) + { + codes.put(wurzel.getBuchstabe(), "0"); + } + else + { + generieren(codes,wurzel,""); + } + for (var entry : codes.entrySet()) { System.out.println("->" + entry.getKey() + ", Code: " + entry.getValue()); @@ -89,25 +95,34 @@ public class Main Node current = baum; String decoded = ""; + boolean hatNurEinBuchstabenart = current.getRight() == null && current.getLeft() == null; + if(hatNurEinBuchstabenart) + { + for(int i=0;i<code.length();i++) + { + decoded += baum.getBuchstabe(); + } + System.out.println(decoded); + return decoded; + + } + + for(int i =0;i<code.length();i++) { - printBaum(current); - System.out.println(); - + if(code.charAt(i) == '1') + { + current= current.getRight(); + } + if(code.charAt(i) == '0') + { + current = current.getLeft(); + } if(current.getRight() == null && current.getLeft() == null) { decoded += current.getBuchstabe(); current = baum; } - - if(code.charAt(i) == '1') - { - current= baum.getRight(); - } - if(code.charAt(i) == '0') - { - current = baum.getLeft(); - } } System.out.println(decoded); return decoded; diff --git a/Node.java b/Node.java index 4d8f772..79604fc 100644 --- a/Node.java +++ b/Node.java @@ -47,6 +47,8 @@ public class Node node.setBuchstabe(entry.getKey()); nodes.add(node); } + + while (nodes.size() > 1) {