[CODE lang="java" highlight="16, 31, 73"]
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
public abstract class TreeNode {
private Collection<TreeNode> children = new ArrayList<>();
private int numberOfSticksLeft;
TreeNode node;
// Der Konstruktor soll den ganzen Baum unter der neuen Node erstellen.
public TreeNode(int numberOfSticksLeft) {
this.numberOfSticksLeft = numberOfSticksLeft;
if (numberOfSticksLeft <= 0) {
// "There are no more sticks to pick up"
throw new IllegalArgumentException("numberOfSticksLeft: " + " less than 0");
}
}
/*
* Methode soll ein ein passendes Nachfolge- TreeNode -Objekt liefern.
* UnsupportedOperationException werfen.
*/
public TreeNode createChild(int numberOfSticksLeft) {
throw new UnsupportedOperationException();
}
/*
* Ist der Zug gültig, soll der richtige Typ TreeNode mit der restlichen Anzahl
* Hölzchen zurückgegeben werden.
*/
public TreeNode createChildChecked(int sticksToTake) {
if (sticksToTake > 3 || sticksToTake < 1) {
throw new IllegalArgumentException("invalid draw");
}
if (numberOfSticksLeft < 0) {
throw new IllegalArgumentException("numberOfSticksLeft: " + "less than 0");
}
// for (TreeNode t: children)
// System.out.println(t);
// children.forEach(c -> System.out.println(c));
return t;
}
public int getNumberOfSticksLeft() {
return numberOfSticksLeft;
}
/*
* die Bewertung, die ein Leaf hat, wenn dieser Knoten dessen
* Elternknoten ist.
*/
public int getChildLeafValue() {
throw new UnsupportedOperationException();
}
// Kindknoten dieses Knotens zurück.
public Collection<TreeNode> getSuccessors() {
for (TreeNode t : children) {
children.add(t);
}
this.children.addAll(children);
return children;
}
/*
* Kindknoten mit der groeßten Bewertung als
* Optional zurueck
*/
public Optional<Integer> getDrawWithHighestValueSuccessor() {
Optional<Integer> empty = Optional.empty();
return empty;
}
}
[/CODE]
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
public abstract class TreeNode {
private Collection<TreeNode> children = new ArrayList<>();
private int numberOfSticksLeft;
TreeNode node;
// Der Konstruktor soll den ganzen Baum unter der neuen Node erstellen.
public TreeNode(int numberOfSticksLeft) {
this.numberOfSticksLeft = numberOfSticksLeft;
if (numberOfSticksLeft <= 0) {
// "There are no more sticks to pick up"
throw new IllegalArgumentException("numberOfSticksLeft: " + " less than 0");
}
}
/*
* Methode soll ein ein passendes Nachfolge- TreeNode -Objekt liefern.
* UnsupportedOperationException werfen.
*/
public TreeNode createChild(int numberOfSticksLeft) {
throw new UnsupportedOperationException();
}
/*
* Ist der Zug gültig, soll der richtige Typ TreeNode mit der restlichen Anzahl
* Hölzchen zurückgegeben werden.
*/
public TreeNode createChildChecked(int sticksToTake) {
if (sticksToTake > 3 || sticksToTake < 1) {
throw new IllegalArgumentException("invalid draw");
}
if (numberOfSticksLeft < 0) {
throw new IllegalArgumentException("numberOfSticksLeft: " + "less than 0");
}
// for (TreeNode t: children)
// System.out.println(t);
// children.forEach(c -> System.out.println(c));
return t;
}
public int getNumberOfSticksLeft() {
return numberOfSticksLeft;
}
/*
* die Bewertung, die ein Leaf hat, wenn dieser Knoten dessen
* Elternknoten ist.
*/
public int getChildLeafValue() {
throw new UnsupportedOperationException();
}
// Kindknoten dieses Knotens zurück.
public Collection<TreeNode> getSuccessors() {
for (TreeNode t : children) {
children.add(t);
}
this.children.addAll(children);
return children;
}
/*
* Kindknoten mit der groeßten Bewertung als
* Optional zurueck
*/
public Optional<Integer> getDrawWithHighestValueSuccessor() {
Optional<Integer> empty = Optional.empty();
return empty;
}
}
[/CODE]