Exceptio in thread "main" java.lang.StackOverflowError

Hola buenas tengo terminado mi proyecto pero cuadno compilo me sale lo siguiente:
Exception in thread "main" java.lang.StackOverflowError
        at arboljd.Node.<init>(Main.java:14)
        at arboljd.NList.<init>(Main.java:9)
        at arboljd.Node.<init>(Main.java:17)
        at arboljd.NList.<init>(Main.java:9)
        at arboljd.Node.<init>(Main.java:17) ........................
porque puede ser? Este es mi codigo
import java.io.IOException;
import java.io.*;
class NInternal extends Node {
    Node[] next;
}
class NList extends Node {
    String w;
    NList[] next = new NList[10];
}
class Node {
    char c;
    NInternal[] i = new NInternal[10];
    NList e = new NList();
}
class Arboljd {
    static public char getChar() throws IOException {
        char c = (char) System.in.read();
        input();
        return c;
    }
    static public void input() throws IOException {
        while ((char) System.in.read() != '\n')
            ;
    }
    static public int initNode(Node n, char l) throws IOException {
        // Inicializar el nodo a insertar
        n.e = null;
        n.c = l;
        return 0;
    }
    static public int insertNode(char l, int r, Node root) throws IOException {
        // Inicializar el nodo a insertar
        Node newNode = new Node();
        if (initNode(newNode, l) != 0) {
            System.out.println("Fallo al inicializar el Nodo\n");
        } else {
            // En caso de que sea el primer nodo a insertar.
            if (root == null) {
                System.out.println("Se va a insertar el nodo raiz \n");
                root = newNode;
            } else { // Cualquier otro nodo despues del raiz.
            }
        }
        return r;
    }
    static public int insertWord(Node n, String l) {
        String sAux = l;
        Node nAux = n;
        char cAux;
        for(int i = 0; i < sAux.length(); i++) {
            cAux = sAux.charAt(0);
            switch (cAux) {
            case 'a' | 'A':
                nAux = nAux.i[0];
                break;
            case 'b' | 'B':
                nAux = nAux.i[1];
                break;
            case 'c' | 'C':
                nAux = nAux.i[2];
                break;
            case 'd'|'D' :
                nAux = nAux.i[3];
                break;
            case 'e'|'E' :
                nAux = nAux.i[4];
                break;
            case 'f'|'F' :
                nAux = nAux.i[5];
                break;
            case 'g'|'G' :
                nAux = nAux.i[6];
                break;
            case 'h'|'H' :
                nAux = nAux.i[7];
                break;
            case 'i'|'I' :
                nAux = nAux.i[8];
                break;
            case 'j'|'J' :
                nAux = nAux.i[9];
                break;
            case 'k'|'K' :
                nAux = nAux.i[10];
                break;
            case 'l'|'L' :
                nAux = nAux.i[11];
                break;
            case 'm'|'M' :
                nAux = nAux.i[12];
                break;
            case 'n'|'N' :
                nAux = nAux.i[13];
                break;
            case 'o'|'O' :
                nAux = nAux.i[14];
                break;
            case 'p'|'P'...

Añade tu respuesta

Haz clic para o