arbol binario (en C) que ingrese, elimine y liste datos

Tengo un problema para la eliminación de datos, depende que dato elimine me lo raliza bien o no. Les dejo el codigo adjunto. El programa esta corrido en devC++. Cualquier cosa que no se entienda lo que necesito, o que no salga bien el adjunto, por favor avisenme. Desde ya muchas gracias.
 

Adjuntos

  • arbol.txt
    2.5 KB · Visitas: 15
Tengo un problema para la eliminación de datos, depende que dato elimine me lo raliza bien o no. Les dejo el codigo adjunto. El programa esta corrido en devC++. Cualquier cosa que no se entienda lo que necesito, o que no salga bien el adjunto, por favor avisenme. Desde ya muchas gracias.

hi electro,
puedes explicar con que datos los prueba?

:)
 
Ahi te adjunto un ejemplo, es una pantalla del programa.
Ingrese 5-6-2-89-87-56-1000(el 1000 es para cortar el ingreso) y cuando quise borrar el 6 me sale ese error
 

Adjuntos

  • Dibujo.rar
    11.5 KB · Visitas: 8
he visto esto:

void imprime(struct arbol *p)
{
if(p->izq!=0)
imprime(p->izq);
printf("==> %d\n",p->dato);
if(p->der!=0)
imprime(p->der);
}

llamas a la funcion dentro de la funcion??
 
Si, es curioso, nunca pense que se podia hacer, traducido a asm simplemente sera un salto, pero no sabia que en C++ el compilador lo permitia.

No sé que conllevará la función, pero creo que no es sólo un salto...... es también conservar una instancia de la función en la memoria como si fuera un objeto existiendo hasta que la funcion empiece a retornar dentro de sí misma, también de manera recursiva...
 
yo mas bien diria que seria como hacer un bucle, es decir, mientras existan datos en el puntero ya sea p->izq o p->der se vuelve al inicio de la funcion, una vez no hay datos en los punteros el programa continua.

Como tu dices se llama recursividad, pero al fin y al cabo no deja de ser un bucle. Con el salto me referia a asm, osea un call a una nueva instancia de la funcion.
 
Sí, es recursividad. De todas formas no me hace problema por eso el programa, lo que no logro es que me elimine todos los nodos de la misma forma. Algunos los elimina sin problema y en otros me da ese error que adjunté.
 
Hi nacho,
¡Es algo complicado y entretenido a la vez! jijii
Tuve que agregar varias validaciones por que genera algunos errores
cuando se intenta borrar punteros que no existe y cuando se intentaba
borrar la raiz.


:)
 

Adjuntos

  • binary1.bmp
    73.9 KB · Visitas: 9
Hola Unikfriend!
Lo solucionaste, barbaro! Pero me podrías mandar el código para ver como te quedó??

Hola nacho, aqui esta el programa

Una disculpa, se me olvido subirlo y ayer estuve enferma.
lo he provado con pocos datos pero creo que trabaja bien.
si encuentras algo que se pueda mejorar avisame.
:)

Ver la direccion en memoria de cada valor es de mucha ayuda.
 

Adjuntos

  • Binary.txt
    3.5 KB · Visitas: 15
  • binary1.bmp
    53.4 KB · Visitas: 6
Última edición:
Atrás
Arriba