# TreeNode erstellen [Hilfe beim Konstruktor, Zeile 16]



## JimmyKudo (27. Feb 2021)

[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]


----------



## kneitzel (27. Feb 2021)

Wie wäre es, wenn du uns etwas mehr an Informationen gibst? Was willst du erreichen? Was ist das Problem?


----------



## JimmyKudo (27. Feb 2021)

Hi, danke fuer deine Antwort. Ich weiß, wie man eine Ternäre Baumstruktur erstellt. Mit root;    root.left, root.middle, root.right    und dann geht es weiter mit    root.left.left; root.left.middle; root.left.right;    .... usw.  Wie soll ich aber eine n-äre Baumstruktur erstellen nur unter Nutzung des Konstruktors, aber gleichzeitig ohne unteteilung der Nodes in left, middle, right, root, tail. Sprich: Der Konstruktor soll den ganzen Baum erstellen.


----------

