diff --git a/Main.java b/Main.java index 22f55f3..86caf70 100644 --- a/Main.java +++ b/Main.java @@ -1,6 +1,7 @@ import java.util.HashMap; import java.util.*; import java.nio.ByteBuffer; +import java.util.Stack; public class Main { @@ -35,13 +36,36 @@ public class Main System.out.println(byteString_to_character(character_to_byteString('f'))); System.out.println(byteString_to_character(character_to_byteString('g'))); System.out.println(byteString_to_character(character_to_byteString('h'))); - - - byteString_to_baum(baum_to_byteString(wurzel)); + byteString_to_baum(baum_to_byteString(wurzel)); printBaum(wurzel); } + public static void test2() + { + Map zahlen = Zählen.countEachLetter("aaaabbc"); + Node wurzel = Node.erstellen(zahlen); + printBaum(wurzel); + //byteString_to_baum(baum_to_byteString(wurzel)); + HashMap codes = new HashMap(); + + 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()); + } + + printBaum(byteString_to_baum(baum_to_byteString(wurzel))); + } + public static void printBaum(Node baum) { if(baum == null)return; @@ -73,9 +97,11 @@ public class Main public static void generieren(HashMap codes, Node node, String code) { if(node == null)return; + System.out.println(node.getBuchstabe() +" " + code); if(node.getLeft() == null && node.getRight() == null) { codes.put(node.getBuchstabe(), code); + return; } generieren(codes, node.getLeft(), code + "0"); @@ -160,7 +186,7 @@ public class Main return null; } } - System.out.print(result+ " "); + return result; } @@ -211,28 +237,82 @@ public class Main public static String baum_to_byteString (Node baum) { if(baum == null)return ""; - System.out.println(baum.getBuchstabe()); - + String byteString = character_to_byteString(baum.getBuchstabe()); byteString += baum_to_byteString(baum.getLeft()); byteString += baum_to_byteString(baum.getRight()); return byteString; } - + public static Node byteString_to_baum (String s) { - String test = ""; + Node root = null; + Stack äste = new Stack(); for(int i=0;i32"); + return null; + } + + int result = 0; + for(int i=0 ;i<32;i++) + { + if(byteString.charAt(31-i) == '1')result|=1<>(31-i))&1)==1; + result+= bit?'1': '0'; //falls bit wert 1 hat addiert es 1 zu dem string, wenn nicht dann addiertes es 0 + } + + return result; } - + } diff --git a/Node.java b/Node.java index 79604fc..bb73bd9 100644 --- a/Node.java +++ b/Node.java @@ -62,4 +62,24 @@ public class Node } return nodes.poll(); } + + public void add(Node node) + { + if(left == null) + { + left= node; + return; + } + + if(right == null) + { + right= node; + return; + } + } + + public boolean hatPlatzKinder() + { + return left==null || right==null; + } }