Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Arnold Herrera en 21 Abril 2016, 04:53 am



Título: Eliminacion Árbol Binario
Publicado por: Arnold Herrera en 21 Abril 2016, 04:53 am
Buenas tardes compañeros vengo a molestarlosun poco, es que estoy haciendo una eliminacion de nodos de un arbol binario pero no se que me este quedando mal, agredeceria su ayuda.

Código
  1. arbol *arbol::eliminar(arbol *raiz){
  2. arbol *a,*aux,*bor;
  3. int dato;
  4. cout<<"INGRESE EL VALOR A CONSULTAR: ";
  5. cin>>dato;
  6. cout<<endl;
  7. aux=raiz;  
  8. int c=0;  
  9. while(aux!=NULL){
  10. if(dato==aux->dato){
  11. cout<<"EL DATO PERTENECE AL ARBOL\n";
  12. cout<<"NIVEL : "<<c;
  13. break;
  14.  
  15. }else{
  16. if(dato>aux->dato){
  17. aux=aux->der;
  18. c++;
  19. }else{
  20. if(dato<aux->dato){
  21. aux=aux->izq;
  22. c++;
  23. }
  24. }
  25. }
  26. }
  27. if(aux->izq==NULL&&aux->der==NULL){
  28. delete aux;
  29. }else{
  30. if(aux->izq!=NULL&&aux->der==NULL){
  31. bor=aux;
  32. aux=aux->izq;
  33. delete bor;
  34. }else{
  35. if(aux->der!=NULL&&aux->izq==NULL){
  36. bor=aux;
  37. aux=aux->der;
  38. delete bor;
  39. }
  40. }
  41.  
  42. }
  43.  
  44. }

Agradeceria mucho su ayuda!!


Título: Re: Eliminacion Árbol Binario
Publicado por: MAFUS en 22 Abril 2016, 16:17 pm
Pon, con tus propias palabras, qué quieres conseguir.


Título: Re: Eliminacion Árbol Binario
Publicado por: HardForo en 22 Abril 2016, 16:40 pm
Quiere buscar un dato en un arbol y si lo encuentra quitarlo; la idea es de forma de ir rapidamente encontrando todos los valores de un conjunto (supongo no se repiten) y quitarlos de esa bolsa.

Supongo que si usara la estructura set seria mas lenta en las operacion de busqueda (seguro) y eliminacion de los elementos porque el arbol binario es una estructura donde los datos estan ordenados..


Título: Re: Eliminacion Árbol Binario
Publicado por: fary en 22 Abril 2016, 18:54 pm
Lo que tienes que hacer el liberar la memoria y hacer que el campo anterior al eliminado apunte al que va después del que eliminas.

Saludos.


Título: Re: Eliminacion Árbol Binario
Publicado por: MAFUS en 22 Abril 2016, 19:04 pm
Para nodos con usa sola rama sí, pero si tienen dos esta solución no es suficiente.
Para el siguiente árbol:
Código:

        5
    3       7
  2   4   6   8

Si se elimina el 3 debe quedar así:
Código:

        5
    2       7
      4   6   8

Pero si se elimina el 5 debe quedar así:
Código:

        3
    2       7
      4   6   8


Título: Re: Eliminacion Árbol Binario
Publicado por: fary en 22 Abril 2016, 20:55 pm
Depende de a lo que este aplicado el árbol  :laugh: y de su estructura.


Título: Re: Eliminacion Árbol Binario
Publicado por: MAFUS en 23 Abril 2016, 15:44 pm
Te recomiendo te pases por aquí:
https://www.youtube.com/watch?v=kjYKBEUB0y0