Anda di halaman 1dari 3

virtual void insertar(const G &x) throw () { assert(not estaVacio()); arbolBase().

irRaiz(); int hijo=0; bool seguir=true; bool existe=false; while(seguir==true) { if(x<obtenerElemento()) { if(!arbolBase().existeHijo(0))//no hay hijo izquierdo seguir=false; else arbolBase().bajar(0); } else { if(x>obtenerElemento()) { if(!arbolBase().existeHijo(1))//no hay hijo derecho { hijo=1; seguir=false; } else arbolBase().bajar(1); } else { existe=true; seguir=false; } } } if (existe==true) arbolBase().asignarElemento(x);

else arbolBase().insertar(x,hijo); }

virtual void borrar() throw () { // COMPLETAR assert (estaVacio()==false); G* data= const_cast<G*> (&arbolBase().obtenerElemento()); if(arbolBase().esHoja()) { if(arbolBase().esRaiz()) arbolBase().borrarRaiz(); else { arbolBase().subir(); if(arbolBase().obtenerElemento()<*data) arbolBase().borrar(1); else arbolBase().borrar(0); } } else { int hijoABorrar; if(arbolBase().existeHijo(0)) { arbolBase().bajar(0); hijoABorrar=0; if(arbolBase().existeHijo(1))

{ hijoABorrar=1; while(arbolBase().existeHijo(1)) arbolBase().bajar(1); } } else //buscar menor del subarbol derecho { arbolBase().bajar(1); hijoABorrar=1; if(arbolBase().existeHijo(0)) { hijoABorrar=0; while(arbolBase().existeHijo(0)) arbolBase().bajar(0); } } *data=arbolBase().obtenerElemento(); if(arbolBase().esHoja()) { arbolBase().subir(); arbolBase().borrar(hijoABorrar); } else borrar(); }
}

Anda mungkin juga menyukai