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 A d’enters sense repeticions i un enter k, retorni:
true (false altrament)
si hi ha un camí de l’arrel a l’enter k a l’arbre A.
La puntuació que podeu obtenir és la següent:
Una solució no recursiva implicarà un zero a tot l’exercici, independentment dels resultats que doni el jutge.
Entrada
La funció rep un arbre binari d’enters sense repeticions i un enter.
Sortida
Torna un booleà b i una pila d’enters p.
b és true (false altrament) si l’enter
és a l’arbre, i p indica el camí de l’arrel (cim de p)
fins a l’enter (fons de p).
Observació
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