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.
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.
Com a sortida es mostrarà l’estructura de l’arbre binari de sumes
resultant. Podeu utilitzar l’operador << definit dins
la classe arbreBin.
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]
| \__.
| \__.
\__.