Subato

BinTreeWithIterator

Ein selbstgemachter Iterator für Bäume

Machen Sie die Klasse BinTree "for-each-fähig", indem Sie einen Iterator hinzufügen:

  • Verwenden Sie die Interfaces Iterator und Iterable, wie in den Videos von Kapitel 06 vorgestellt.
  • Ihr Iterator soll den Baum in Level-order durchlaufen.
  • Hierzu benötigen Sie eine zusätzliche Datenstruktur, die sich noch zu besuchende Knoten merkt, z.B. einen Stack oder eine Queue. Verwenden Sie hierfür eine vorgefertige Klasse aus java.util, z.B. Stack (mit den Methoden push() und pop()) oder Queue (mit den Methoden add(), remove()).
  • Als konkrete Instanziierung Ihres Stacks / Ihrer Queue können Sie java.util.LinkedList verwenden, denn diese Klasse LinkedList implementiert beide Interfaces.

 


package de.hsrm.ads; import java.util.Iterator; public class BinTreeWithIterator<T> implements Iterable<T> { Node root; class Node { Node left; Node right; T value; Node(T value) { this.value = value; } Node(T value, Node left, Node right) { this.value = value; this.left = left; this.right = right; } } public BinTreeWithIterator() { // FIXME } public static void main(String[] args) { BinTreeWithIterator<String> tree = new BinTreeWithIterator<String>(); tree.root = tree.new Node("Winter"); tree.root.left = tree.new Node("is"); tree.root.right = tree.new Node("coming."); // should print "Winter \n is \n coming." for (String s : tree) { System.out.println(s); } } }
java
You are not logged in and therefore you cannot submit a solution.