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; } } }
string brackets(Arbin<T> t){ //Caso base - Es vacio if t.esVacio() return "()"; //Caso recursivo return brackets(t.hijoIz() + t.raiz() + t.hijoDr()); }