Les fulles d’un arbre binari són els nodes que no tenen
ni fill dret ni fill esquerre.
Un camí és una seqüència de nodes d’un arbre A
[a1, a2, …, ai, ai+1, …, an]
tal que a1 és l’arrel d’A, an és una fulla,
i per a tot ai (i < n) tenim que ai+1 és el fill de ai.
Un arbre A té tants camins com fulles.
El pes d’un camí [a1, a2, …, ai, ai+1, …, an] és:
| ai |
Feu la funció recursiva
int pesMaxim (arbreBin<int> A);
tal que, donat un arbre binari de distàncies A,
torni el màxim dels pesos de tots els camins que hi ha a l’arbre A.
A1 A2 A3
4 2 9
/ \ / \ / \
2 5 12 3 2 3
/ \ / \ / / \
5 6 3 1 7 7 2
Per exemple,
per a l’arbre A1 la funció tornaria 12, que és el pes
del camí [4,2,6] o la del camí [4,5,3].
Per a l’arbre A2 la funció tornaria 14, que és el pes
del camí [2,12].
Per a l’arbre A3 la funció tornaria 19, que és el pes
del camí [9,3,7].
El pes màxim d’un arbre buit és 0.
Entrada
La funció rep un arbres binari d’enters, on tots els enters són més grans o iguals a 0.
Sortida
El màxim dels pesos de tots els camins que hi ha a l’arbre. El pes màxim d’un arbre buit és 0.
Observació
Heu d’enviar la solució comprimida en un fitxer .tar:
tar cvf program.tar pesMaxim.cpp
Observeu que per compilar us donem el Makefile,
la capçalera del mòdul funcional pesMaxim.hpp,
la implementació de l’arbre binari arbreBin.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 2 1 5 0 7 0 4 2 9 2 6 0 15 1 2 2
Output
[2]
\__[15]
| \__[6]
| | \__.
| | \__.
| \__.
\__[9]
\__[4]
| \__[7]
| | \__.
| | \__.
| \__[5]
| \__.
| \__.
\__[2]
\__[9]
| \__.
| \__.
\__.
23
Input
11 8 0 9 0 4 2 10 0 11 0 5 2 2 2 6 0 7 0 3 2 0 2
Output
[0]
\__[3]
| \__[7]
| | \__.
| | \__.
| \__[6]
| \__.
| \__.
\__[2]
\__[5]
| \__[11]
| | \__.
| | \__.
| \__[10]
| \__.
| \__.
\__[4]
\__[9]
| \__.
| \__.
\__[8]
\__.
\__.
18