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