string brackets(Arbin<T> t){ //Caso base - Es vacio if t.esVacio() return "()"; //Caso recursivo return brackets(t.hijoIz() + t.raiz() + t.hijoDr()); }
int main() { int ncasos; cin >> ncasos; Arbin<char> a; for (int i = 0; i < ncasos; i++) { a = leerArbol('.'); a.frontera(); cout << endl; } return 0; }
int main(){ int ncasos, numero; cin >> ncasos; Arbin<int> a; for (int i = 0; i < ncasos; i++){ cin >> numero; auto requisitos = [numero](int num) -> bool { return num % numero == 0; }; a = leerArbol(-1); cout << a.nNodosCumplenF(requisitos) << endl; } return 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; } } }