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 { public class Baum {
private Knoten wurzel; private Knoten wurzel;
private Queue<Knoten> ll = new LinkedList<Knoten>();
private StringBuilder sb;
public void add(int wert) { public void add(int wert) {
if (wurzel == null) { if (wurzel == null) {
wurzel = new Knoten(wert); wurzel = new Knoten(wert);
@ -15,6 +20,19 @@ public class Baum {
wurzel.inorder(); 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 { class Knoten {
@ -54,6 +72,20 @@ public class Baum {
this.rechts.inorder(); 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.add(11);
b1.inorder(); // b1.inorder();
System.out.println(b1); System.out.println(b1.toString());
} }