Eliminacion Árbol Binario

Iniciado por Arnold Herrera, 21 Abril 2016, 04:53 AM

0 Miembros y 1 Visitante están viendo este tema.

Arnold Herrera

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!!

MAFUS

Pon, con tus propias palabras, qué quieres conseguir.

HardForo

#2
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..
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

fary

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.
Un byte a la izquierda.

MAFUS

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

fary

Depende de a lo que este aplicado el árbol  :laugh: y de su estructura.
Un byte a la izquierda.

MAFUS