L’arbre de sumes d’un arbre a és un altre arbre b amb la mateixa estructura, tal que cada node de b és la suma dels descendents del seu node corresponent a a, incloent-lo a ell mateix.
(Per veure un exemple amb els arbres corresponents a l’exemple d’entrada-sortida, consulteu la versió pdf d’aquest enunciat.)
Per exemple, donat l’arbre:
el seu arbre de sumes és:
Especifiqueu i dissenyeu una funció que calculi l’arbre de sumes d’un arbre donat.
Entrada
Com a entrada hi haurà la mida de l’arbre i els nodes de l’arbre binari en
postordre. Per cada node s’indica el seu valor i el nombre de fills (2 fills,
-1 indica un fill esquerre, 1 indica un fill dret o 0 fills). Podeu utilitzar
l’operador >>
definit dins la classe arbreBin
per llegir l’arbre
binari.
Sortida
Com a sortida es mostrarà l’estructura de l’arbre binari de sumes resultant. Podeu utilitzar
l’operador <<
definit dins la classe arbreBin
.
Observació
Cal fer servir la classe arbreBin
que us donem.
Heu d’enviar el fitxer amb la solució program.cpp
comprimida en un
fitxer .tar:
tar cvf program.tar program.cpp
A l’enviar la solució escriviu una anotació ("Solució iterativa" o "Solució recursiva") segons el tipus de solució que hagueu fet.
Observeu que per compilar us donem el Makefile
i el mòdul
arbreBin
.
Input
11 5 0 -3 0 -3 2 8 0 2 2 4 0 0 0 1 0 -2 2 -1 2 3 2
Output
[14] \__[2] | \__[-1] | | \__[1] | | | \__. | | | \__. | | \__[0] | | \__. | | \__. | \__[4] | \__. | \__. \__[9] \__[8] | \__. | \__. \__[-1] \__[-3] | \__. | \__. \__[5] \__. \__.
Input
6 3 0 5 1 4 0 2 1 -1 -1 7 2
Output
[20] \__[5] | \__. | \__[6] | \__[4] | | \__. | | \__. | \__. \__[8] \__[3] | \__. | \__. \__.