Feu la funció
vector<int> sumesNivells (const arbreBin<int>);
tal que, donat un arbre binari d’enters (que no és buit), torni un vector d’enters tal que a la posició i-èssima del vector hi hagi la suma dels enters que són al nivell de l’arbre (assumim que l’arrel té el nivell ).
Per exemple, la funció tornaria, per a l’arbre A1 el
vector v = [1,5,7], perquè la suma dels enters del nivell
és
,
la del nivell
és
i la del nivell
és
.
Per a l’arbre A2 tornaria v = [1,8,1] per a
l’arbre A3 tornaria v = [3,5,4].
A1 A2 A3
1 1 3
/ \ / \ / \
2 3 5 3 2 3
/ \ / \ / / / \
1 4 1 1 1 1 1 2
La funció rep un arbre binari d’enters no buit.
Un vector de mida alçada(a) tal que a la posició
v[i] hi hagi la suma dels elements de nivell
de l’arbre a.
Heu d’enviar la solució comprimida en un fitxer .tar:
tar cvf program.tar sumesNivells.cpp
Observeu que per compilar us donem el Makefile,
la capçalera del mòdul funcional sumesNivells.hpp,
la implementació de l’arbre binari arbreBin.hpp i el
programa principal program.cpp.
Input
9 9 0 2 1 5 0 7 0 4 2 3 2 8 0 6 1 1 2
Output
[1]
\__[6]
| \__[8]
| | \__.
| | \__.
| \__.
\__[3]
\__[4]
| \__[7]
| | \__.
| | \__.
| \__[5]
| \__.
| \__.
\__[2]
\__[9]
| \__.
| \__.
\__.
1 9 14 21
Input
11 8 0 9 0 4 2 10 0 11 0 5 2 2 2 6 0 7 0 3 2 1 2
Output
[1]
\__[3]
| \__[7]
| | \__.
| | \__.
| \__[6]
| \__.
| \__.
\__[2]
\__[5]
| \__[11]
| | \__.
| | \__.
| \__[10]
| \__.
| \__.
\__[4]
\__[9]
| \__.
| \__.
\__[8]
\__.
\__.
1 5 22 38