Feu la funció recursiva
T camiEnArbre(BinaryTree<int>, int);
on el tipus T és:
typedef pair<bool,stack<int>> T;
tal que, donats un arbre binari d’enters sense repeticions i un enter , retorni:
true (false altrament) si hi ha un camí
de l’arrel a l’enter
a l’arbre
.
Una pila amb el camí que va de l’arrel d’ fins a . L’arrel (inici del camí) serà el cim de la pila, i (el final del camí) serà el fons de la pila, i entre tots dos, hi haurà la resta del camí en ordre. Si no és a , llavors aquesta pila tindrà un valor indefinit (no caldrà tenir-lo en compte).
La puntuació que podeu obtenir és la següent:
Solució correcta en els jocs de proves públics: 5 punts.
Solució correcta en els jocs de proves públics, especificació de la funció, H.I. i funció fita: 8 punts.
Solució correcta en els jocs de proves públics i privats: 7 punts.
Solució correcta en els jocs de proves públics i privats, especificació de la funció, H.I. i funció fita: 10 punts.
Una solució no recursiva implicarà un zero a tot l’exercici, independentment dels resultats que doni el jutge.
La funció rep un arbre binari d’enters sense repeticions i un enter.
Torna un booleà
i una pila d’enters
.
és true (false altrament) si l’enter és a
l’arbre, i
indica el camí de l’arrel (cim de
)
fins a l’enter (fons de
).
Heu d’enviar la solució comprimida en un fitxer .tar:
tar cvf program.tar camiEnArbre.cpp
Observeu que per compilar us donem el Makefile, la
capçalera del mòdul funcional camiEnArbre.hpp, la
implementació de l’arbre binari BinaryTree.hpp, el fitxer
utilitats.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
VISUALFORMAT
1
|
--------------- ---------------
| |
2 3
| |
------- ------- ------- -------
| | | |
4 5 6 7
| | | |
---- ---- ---- ---- ---- ---- ---- ----
| | | | | | | |
8 9 10 11 12 13 14 15
3
8
15
1
56
9
12
5
22
Output
SI: 3 |1| |3| = SI: 8 |1| |2| |4| |8| = SI: 15 |1| |3| |7| |15| = SI: 1 |1| = NO: 56 SI: 9 |1| |2| |4| |9| = SI: 12 |1| |3| |6| |12| = SI: 5 |1| |2| |5| = NO: 22
Input
INLINEFORMAT 1(2(4(8(,),9(,)),5(10(,),11(,))),3(6(12(,),13(,)),7(14(,),15(,)))) 3 8 15 1 56 9 12 5 22
Output
SI: 3 |1| |3| = SI: 8 |1| |2| |4| |8| = SI: 15 |1| |3| |7| |15| = SI: 1 |1| = NO: 56 SI: 9 |1| |2| |4| |9| = SI: 12 |1| |3| |6| |12| = SI: 5 |1| |2| |5| = NO: 22