Rudimentäre Breitensuche implementiert

(noch ohne Zeilenumbrüche für die Niveaus)
main
Oliver Hummel 2022-12-20 14:40:30 +01:00
parent c20fe70015
commit 3d9fbcd8bb
2 changed files with 35 additions and 3 deletions

View File

@ -1,7 +1,12 @@
import java.util.LinkedList;
import java.util.Queue;
public class Baum {
private Knoten wurzel;
private Queue<Knoten> ll = new LinkedList<Knoten>();
private StringBuilder sb;
public void add(int wert) {
if (wurzel == null) {
wurzel = new Knoten(wert);
@ -15,6 +20,19 @@ public class Baum {
wurzel.inorder();
}
public String toString() {
// Breitensuche
if (wurzel == null)
return "Baum ist noch leer";
sb = new StringBuilder();
ll.add(wurzel);
wurzel.breitensuche();
return sb.toString();
}
// ----------
class Knoten {
@ -54,6 +72,20 @@ public class Baum {
this.rechts.inorder();
}
public void breitensuche() {
if (links != null)
ll.add(this.links);
if (rechts != null)
ll.add(this.rechts);
sb.append(ll.poll().wert + " ");
if (ll.size() == 0)
return;
ll.peek().breitensuche();
}
}
}

View File

@ -10,9 +10,9 @@ public class Main {
b1.add(11);
b1.inorder();
// b1.inorder();
System.out.println(b1);
System.out.println(b1.toString());
}