Example #1
0
bool esMonticulo(const Arbin<int> &a) {
	if (a.esVacio()) //BASE si es vacío SÍ es heap
	{
		return true;
	}
	else
	{
		if (a.hijoIz().talla() - a.hijoDr().talla() == 0 || a.hijoIz().talla() - a.hijoDr().talla() == 1)
		{
			if ((a.hijoIz().esVacio() || a.raiz() < a.hijoIz().raiz())
				&& (a.hijoDr().esVacio() || a.raiz() < a.hijoDr().raiz())) 
				// PASO RECURSIVO, es heap si los dos hijos lo son
			{
				return esMonticulo(a.hijoIz()) && esMonticulo(a.hijoDr());
			}
			else // BASE si una de las raíces de los hijos es mayor que la raíz padre NO es heap
			{
				return false;
			}
		}
		else // BASE si no está balanceado por la izquierda NO es heap
		{
			return false;
		}
	}
}
Example #2
0
string brackets(Arbin<T> t){
  //Caso base - Es vacio
  if t.esVacio() return "()";
  //Caso recursivo
  

  return brackets(t.hijoIz() + t.raiz() + t.hijoDr());
}