예제 #1
0
bool ArbolB<g>::remove(int valor){
	Nodo *aux = raiz;
	while(aux)
		if(aux->remove(valor)){
			if(aux->tieneHijos()) aux = aux->mayorDeLosMenores();
			rebalancear(aux);
			--n;
			return true;
		}else aux = aux->getSon(valor);
	return false;
}
예제 #2
0
bool ArbolB<g>::insert(int valor){
	Nodo *aux = raiz;
	while(aux){
		if(!aux->tieneHijos()){
			if(aux->insert(valor)){
				rebalancear(aux);
				++n;
				return true;
			}else return false;
		}else {
			aux = aux->getSon(valor);
			if(!aux) return false;
		}
	}
	raiz = new (nothrow) Nodo(valor, NULL);
	if(!raiz) throw NoHayMemoria();
	++n;
	return true;
}