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