Klingt irgendwie nach Übungsaufgabe.
Aber egal: ich sehe nirgends eine Recursion denn das würde bedeuten das die classe eine childclasse erzeugt und dort weitermacht.
Du legst nur einmal eine Classe an und übergibst die gleiche Classe an mitte,links und rechts - macht kein sinn.
Daher brauchst du für jede Richtung eine neue Classe.
Code:
ThreeNode knoten = new ThreeNode();
this.setMiddle(knoten);
knoten = new ThreeNode();
this.setRight(knoten);
und da ein Knoten in der Elternclasse erzeugt wird und daher Ihr auch bekannt ist, wird auch kein Rückgabewert benötigt - sprich createThree(int depth) kann auch void sein.
in der Classe brauchste nur eine Abfrage die folgendes regelt:
beim deepwert von 1 setze mitte, links und rechts auf null;
ansonsten erzeuge neue classen und rufe dort createThree auf und übergebe deep - 1
am elegantesten wäre es wenn du
die logic hinter deep in den konstruktor machst
soweit erstmal von meiner Seite