From bdb5d7334ceefd0ffd299a117d0f1a6a10822bf8 Mon Sep 17 00:00:00 2001 From: david <@> Date: Mon, 13 Feb 2023 12:55:17 +0100 Subject: [PATCH] ubgrade 13.2 --- Binärbaum.java | 36 ++++++++++++++++++++++++++++++++---- Test.java | 4 ++-- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/Binärbaum.java b/Binärbaum.java index 52b6433..a1e3e49 100644 --- a/Binärbaum.java +++ b/Binärbaum.java @@ -17,21 +17,49 @@ public class Binärbaum //Konstruktoren für ein Blatt //Konstruktor für inneren Knoten - + Node Final; public void einfügen(int [] Anzahl){ //alle Nodes werden abgespeichert - ArrayList l = new ArrayList(); + + ArrayList m = new ArrayList(); for(int i =0 ; i= 1){ //Node wird angelegt Node n = new Node((char)(i + 65), Anzahl[i]) ; - l.add(n); + m.add(n); } } - //Sortieren von den Werten mit Selection Sort + //Sortieren von den Werten + + while(m.size() > 1){ + //Minimum finden + int Minimum = Minimum(m); + //ermittelt das Minimum für die Festlegung des rechten Knotens + Node n1 = m.get(Minimum); + //entfernt das aktuelle Minimum + m.remove(Minimum); + + int Minimum2 = Minimum(m); + Node n2 = m.get(Minimum2); + m.remove(Minimum2); + Node neu = new Node(' ', n1.Anzahl + n2.Anzahl); + neu.links = n1; + neu.rechts= n2; + m.add(neu); + } + Final = m.get(0); + } +public void ausgeben(Node n, String i){ +if(n.links != null){ +ausgeben(n.links, i + "0"); +ausgeben(n.rechts, i + "1"); +}else{ + System.out.println(n.wert + " : " + i+ " Anzahl:" + n.Anzahl); } +} + public int Minimum(ArrayList l){ int minindex = 0; for(int i = 0; i