hey habe folgenden code , mit dem ich theoretisch einen Baum aufbaue, indem ich Knoten hinzufüge, aber wenn ich mit der while-schleife die Tiefe überprüfe erhalte ich stets eine 1 , wobei die nach 3 knoten theoretisch 3 betragen müsste.
referenziere ich etwas falsch oder warum kommt es so?
Java:
class Baumknoten{
private int zeichen;
private Baumknoten links, rechts;
// erster Konstruktor falls nur ein knoten vorhanden ist
public Baumknoten(){
links =null;
rechts = null;
this.zeichen =0;
}
// falls weiter Knoten vorhanden sind
public Baumknoten(int z, Baumknoten l, Baumknoten r){
links = l;
rechts = r;
zeichen = z;
}
public Baumknoten(int z){
links = null;
rechts = null;
this.zeichen = z;
}
// getter Methoden
public Object getZeichen(){
return zeichen;
}
public Baumknoten getLinks(){
return links;
}
public Baumknoten getRechts(){
return rechts;}
// setter Methoden
public void setZeichen(int m){
this.zeichen=m;
}
public void setLinks(Baumknoten m){
this.links=m;
}
public void setRechts(Baumknoten m)
{
this.rechts=m;
}
static void einfuegen(Baumknoten vorgänger,Baumknoten nachfolger){
if(vorgänger==null){
System.out.println(" der baum ist leer");
return ;
}
nachfolger= new Baumknoten ();
if(vorgänger.links==null){
vorgänger.links=nachfolger;
}else if(vorgänger.rechts==null){
vorgänger.rechts=nachfolger;
} else {
System.out.println("beide söhne belegt");
}
}
private static void praeorderAusg(Baumknoten b){
// Rekursiver Durchlauf
if (b == null){
return;
}
System.out.print(b.getZeichen() + "|");
praeorderAusg(b.getLinks());
praeorderAusg(b.getRechts());
}
static int zähler=0;
public static void main(String []args){
Baumknoten wurzel= new Baumknoten(1);
System.out.println(wurzel.getLinks());
Baumknoten zwei = new Baumknoten(7);
Baumknoten drei = new Baumknoten(9);
einfuegen(wurzel,zwei);
einfuegen(wurzel,zwei);
einfuegen(wurzel,zwei);
einfuegen(zwei,drei);
einfuegen(zwei,drei);
einfuegen(zwei,drei);
int cnt=0;
while(wurzel.getLinks()!=null) {cnt++;wurzel=wurzel.getLinks();}
System.out.println(" blaaaaa"+cnt);
}
}