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 i+1 de l’arbre (assumim que l’arrel té el nivell 1).
Per exemple, la funció tornaria, per a l’arbre
A1 el vector v = [1,5,7], perquè
la suma dels enters del nivell 1 és 1,
la del nivell 2 és 2 + 3 = 5 i la del nivell
3 és 1 + 4 + 1 + 1 = 7.
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
Entrada
La funció rep un arbre binari d’enters no buit.
Sortida
Un vector de mida alçada(a) tal que a la posició
v[i] hi hagi la suma dels elements de nivell i+1
de l’arbre a.
Observació
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