La création d'une structure d'arbre de données en java?

Je suis en train de créer une structure d'arbre de données en java, où chaque nœud parent peut avoir que trois nœuds enfants mais je suis bloqué sur l'ajout d'un nœud de l'arbre dans le cas où un nœud a au moins un enfant de moins de 3 nœuds enfants. Je ne suis pas sûr si je devrais utiliser un Itérateur pour itérateur par le biais de la liste de nœuds pour le nœud actuel je suis. J'ai essayé d'utiliser une variable qui serait incrémenter à chaque fois que le add() méthode a été appelée.
voici mon code:
Classe de nœud:

public class Node {

    int keyValue;
    int nodeLabel;
    ArrayList<Node> nodeChildren;

    private static int count;

    Node(int _keyValue)
    {
        this.nodeLabel = count;
        this.keyValue = _keyValue;
        this.count++;
        nodeChildren = new ArrayList<Node>();
    }

    public String toString()
    {
        return "Node " + nodeLabel + " has the key " + keyValue;
    }

}

Classe de l'arbre: add() méthode

Node rootNode;
    int incrementor = 0;

    public void addNode(int nodeKey)
    {
        Node newNode = new Node(nodeKey);

        if (rootNode == null)
        {
            rootNode = newNode;
        }
        else if (rootNode.nodeChildren.isEmpty())
        {

            rootNode.nodeChildren.add(newNode);
        }
        else if (!rootNode.nodeChildren.isEmpty())
        {
            Node currentNode = rootNode;
            Node parentNode;
            incrementor = 0;

            while (currentNode.nodeChildren.size() < 3)
            {
                //currentNode.nodeChildren.add(newNode); 
                if (currentNode.nodeChildren.size() == 3)
                {
                    parentNode = currentNode.nodeChildren.get(incrementor);
                    currentNode = parentNode;
                    currentNode.nodeChildren.get(incrementor).nodeChildren.add(newNode);
                }
                else
                {
                    parentNode = currentNode;
                    currentNode = currentNode.nodeChildren.iterator().next();
                    currentNode.nodeChildren.add(newNode);

                }
                incrementor = incrementor + 1;
            }
            System.out.println(rootNode.nodeChildren.size());
        }
    }

- Je obtenir un IndexOutOfBounds exception lorsqu'un troisième nœud est ajouté à l'arbre

L'apprentissage de débogage serait aller un long chemin dans la compréhension des erreurs de ce genre sur votre propre.
Utilisé eclipse débogueur mais merci

OriginalL'auteur user2152012 | 2013-12-03