Programar Árbol Binario de Búsqueda en java

Mi codigo es este segun yo todo esta bien no se porque no inserta los valores,
public class Nodo {
    int numMat;
    Nodo izqda, drcha;
    public Nodo(int mat){
        numMat = mat;
        izqda = drcha = null;
    }
    public void re_enorden(){
        if(izqda != null)
            izqda.re_enorden();
        System.out.println("Matricula:   " +numMat);
        if(drcha != null)
            drcha.re_enorden();
    }
}
public class ABB {
    private Nodo raiz;
    public ABB(){
        raiz = null;
    }
    public void insertar(int nuevoM){
        if(raiz==null){
            raiz =  new Nodo(nuevoM);
        }
        else{
            insertar(raiz,nuevoM);
        }
    }
    private void insertar(Nodo rz, int nm){
        if (rz == null)
            rz = new Nodo(nm);
        else if(nm < rz.numMat)
            insertar(rz.izqda,nm);
        else if(nm > rz.numMat)
            insertar(rz.drcha,nm);
        else
            System.out.println("Numero Duplicados");
    }
    public void visualizar(){
        if(raiz!=null)
            raiz.re_enorden();
    }
}
public class Ejecutar {
    public static void main(String []args){
        ABB arbol = new ABB();
        arbol.insertar(6);
        arbol.insertar(3);
        arbol.insertar(7);
        arbol.visualizar();
    }
}
El primer nodo si lo inserta los demás ya no, estoy usando métodos recursivos pareciera ser que después de la raíz ya no inserta los demás elementos no se que pudiera hacer

1 respuesta

Respuesta
-1
Lo que pasa es que estas utilizando esto:
public void insertar(int nuevoM){
        if(raiz==null){
            raiz =  new Nodo(nuevoM);
        }
        else{
            insertar(raiz,nuevoM);
        }
    }
Al decir esto la primer vez insertas el nodo raíz, la segunda vez insertas dentro del nodo raíz un nodo y la tercer vez insertas nuevamente sobre el nodo raíz sobrescribiendo el anterior
Lo que pasa es que el nodo raíz si me lo ingresa y solo ese los demás ya no los ingresa no se que podría estar pasando. En realidad ese método sirve solo para distinguir cuando se crea la raíz y cuando se crea cualquier otro nodo por lo que el método insertar del else es el que sigue abajo, a ver si me puedes guiar
Por lo mismo el else recibe el raíz, y sobre el raíz crea el nuevo nodo, así que esta mal por eso

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas