Test Foro de elhacker.net SMF 2.1

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 (=cpp) [Seleccionar]
arbol *arbol::eliminar(arbol *raiz){
arbol *a,*aux,*bor;
int dato;
cout<<"INGRESE EL VALOR A CONSULTAR: ";
cin>>dato;
cout<<endl;
aux=raiz;  
int c=0;  
while(aux!=NULL){
if(dato==aux->dato){
cout<<"EL DATO PERTENECE AL ARBOL\n";
cout<<"NIVEL : "<<c;
break;

}else{
if(dato>aux->dato){
aux=aux->der;
c++;
}else{
if(dato<aux->dato){
aux=aux->izq;
c++;
}
}
}
}
if(aux->izq==NULL&&aux->der==NULL){
delete aux;
}else{
if(aux->izq!=NULL&&aux->der==NULL){
bor=aux;
aux=aux->izq;
delete bor;
}else{
if(aux->der!=NULL&&aux->izq==NULL){
bor=aux;
aux=aux->der;
delete bor;
}
}

}

}


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:


        5
    3       7
  2   4   6   8


Si se elimina el 3 debe quedar así:


        5
    2       7
      4   6   8


Pero si se elimina el 5 debe quedar así:


        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