Feu una funció tal que, donat un arbre binaris,
torni true si i només si és un arbre creixent.
Un arbre és creixent si i només si el valor de l’arrel és estrictament inferior a tots els valors que hi ha en els nodes que en pengen.
Per exemple, aquest dos arbres són creixents
1 4
/ \ / \
3 8 5 6
/ \ / \
4 6 6 9
En canvi, aquests dos no ho són:
1 1
/ \ / \
3 8 3 3
/ \ / \ \
2 6 8 6 2
La funció que heu de programar és:
bool arbreCreixent (arbreBin<int>&);
i l’heu de posar al fitxer arbreCreixent.cpp.
Tingueu en compte que la gestió d el’entrada i la sortida la fa el programa principal que ja us passem. Només cal que programeu la funció i prou.
Entrada
Un arbres amb el següent format: la mida de l’arbre i els nodes en postordre d’un arbre binari; per cada node s’indica el seu valor i el nombre de fills.
Sortida
SI (sense accent) si l’arbre és creixent,
NO altrament.
Observació
Heu d’enviar la solució comprimida en un fitxer .tar:
tar cvf program.tar arbreCreixent.cpp
Observeu que per compilar us donem el Makefile,
la classe arbreBin.hpp,
la capçalera del mòdul funcional arbreCreixent.hpp
i el programa principal program.cpp.
Jutge.org també us donarà un semàfor verd si envieu una solució iterativa, però no serà correcte ja que l’enunciat del problema demana que la solució enviada sigui recursiva.
Input
9 9 0 6 1 5 0 7 0 4 2 3 2 8 0 6 1 1 2
Output
SI
Input
6 7 0 2 1 3 1 8 0 6 1 1 2
Output
NO