L 2025-04-30 19:39:03 +02:00
parent 935d31e39f
commit a1c9d3bdda
2 changed files with 113 additions and 13 deletions

View File

@ -1,6 +1,7 @@
import java.util.HashMap;
import java.util.*;
import java.nio.ByteBuffer;
import java.util.Stack;
public class Main
{
@ -36,12 +37,35 @@ public class Main
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));
printBaum(wurzel);
}
public static void test2()
{
Map<Character, Integer> zahlen = Zählen.countEachLetter("aaaabbc");
Node wurzel = Node.erstellen(zahlen);
printBaum(wurzel);
//byteString_to_baum(baum_to_byteString(wurzel));
HashMap<Character, String> codes = new HashMap<Character, String>();
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<Character, String> 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,7 +237,6 @@ 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());
@ -221,18 +246,73 @@ public class Main
public static Node byteString_to_baum (String s)
{
String test = "";
Node root = null;
Stack<Node> äste = new Stack<Node>();
for(int i=0;i<s.length();i+=16)
{
String characterString = s.substring(i,i+16);
Character c = byteString_to_character(characterString);
test += c+" ";
}
System.out.println();
System.out.println(test);
Node node = new Node();
node.setBuchstabe(c);
if(i == 0)root = node;
if(äste.isEmpty() == false)
{
Node elternAst = äste.peek();
elternAst.add(node);
if(elternAst.hatPlatzKinder() == false)
{
äste.pop();
}
}
if(c == null)
{
äste.push(node);
}
}
return root;
}
public static Integer byteString_to_int(String byteString)
{
if(byteString.length() != 32)
{
System.out.println(">32");
return null;
}
int result = 0;
for(int i=0 ;i<32;i++)
{
if(byteString.charAt(31-i) == '1')result|=1<<i; //verschiebt die 1 um i binärpositionen nach links
else if(byteString.charAt(31-i) != '0')
{
System.out.println("was flasch");
return null;
}
}
return result;
}
public static String Int_to_ByteString (int a)
{
String result = "";
for(int i=0;i<32;i++)
{
boolean bit= ((a>>(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;
}
}

View File

@ -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;
}
}