Ich habe ein Problem mit dem Raiz-Parameter in den Methoden Insert und Preorden, Inorden und Postorden, die Referenz, die ich in der Hauptmethode nie ändern und es ist wie die drei kein Element I denken. Wenn ich also versuche, die Methode preOrden auszuführen, ist es so, als wäre der Baum leer und es wird nichts gedruckt.Java Baum Referenz immer Null
PD: Ich füge Zahlen in einen binären Suchbaum ein und ich muss sie in Vorbestellung, Reihenfolge und nach Bestellung bestellen.
public class ABBNodo {
int data;
ABBNodo izq;
ABBNodo der;
public int getData(){
return data;
}
public void setData(int data){
this.data=data;
}
public ABBNodo getIzq(){
return izq;
}
public void setIzq(ABBNodo izq){
this.izq=izq;
}
public ABBNodo getDer(){
return der;
}
public void setDer(ABBNodo der){
this.der=der;
}
}
class ABB{
ABBNodo raiz;
ABBNodo buscar(ABBNodo raiz, int data){
if(raiz== null) return null;
if(data<raiz.getData()) return buscar(raiz.getIzq(),data);
else if(data>raiz.getData()) return buscar(raiz.getDer(),data);
return raiz;
}
ABBNodo insertar(ABBNodo raiz, int data){
if(raiz==null){
raiz=new ABBNodo();
if(raiz==null){
System.out.println("Error de memoria"); return raiz;
}else{
raiz.setData(data);
raiz.setIzq(null); raiz.setDer(null);
}
}else{
if(data<raiz.getData()) raiz.setIzq(insertar(raiz.getIzq(),data));
else if(data>raiz.getData()) raiz.setDer(insertar(raiz.getDer(),data));
}
return raiz;
}
void preOrden(ABBNodo raiz){
if(raiz!=null){
System.out.println(raiz.getData());
preOrden(raiz.getIzq());
preOrden(raiz.getDer());
}
}
void inOrden(ABBNodo raiz){
if(raiz!=null){
inOrden(raiz.getIzq());
System.out.println(raiz.getData());
inOrden(raiz.getDer());
}
}
void postOrden(ABBNodo raiz){
if(raiz!=null){
postOrden(raiz.getIzq());
postOrden(raiz.getDer());
System.out.println(raiz.getData());
}
}
}
class main{
public static void main(String[] args){
ABB a1=new ABB();
int data=0;
ABBNodo raiz = null; //This never changes
do{
System.out.println("Ingrese el numero que quiere agregar al arbol");
data=Lectura.readInt();
a1.insertar(raiz, data);
}while(data!=-1);
a1.inOrden(raiz);
}
}
Wo hast du 'this.raiz' etwas zugewiesen? Es scheint nie eine Instanz zugewiesen zu sein und sollte daher null bleiben. –
Wo soll ich das machen? Ich habe kopiert und versucht, die Methoden aus einem Buch zu verstehen, aber ich habe Probleme mit Raiz. –