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]
| \__.
| \__.
\__.