Implementa un algorisme recursiu que, donat un arbre binary d’enters, sumi tots els nodes, deixi el resultat a l’arrel i posi 0 a la resta de nodes de l’arbre.
/* Pre: a és un arbre binary d'enters. */
/* Post: Suma tots els nodes de l'arbre, deixa el resultat a l'arrel i posa un 0 a la resta de nodes */
void SumTree(BinaryTree<int> &a) {
}
NOTES IMPORTANTS:
L’algorisme ha de ser eficient, és a dir, que no realitzi càlculs innecessaris.
Entre els fitxers que s’adjunten en aquest exercici trobaràs el fitxer BinaryTree.hpp que conté la implementació de la classe BinaryTree. No cal que modifiquis aquest fitxer.
També trobaràs el fitxer program.cpp i el Makefile per a compilar i generar l’executable. El programa principal ja s’encarrega de llegir les dades de l’arbre i cridar al mètode indicat. Només cal que implementis el mètode SumTree.
Es valorarà la correctesa i eficiència de la solució així com la correcta especificació de la precondició, la postcondició, la hipòtesi d’inducció i la funció fita.
Per a pujar la solució has de crear el fitxer solution.tar
així:
tar cf solution.tar SumTree.cpp
Com a entrada hi haurà els nodes de l’arbre en postordre.
Com a sortida es mostrarà l’arbre original i l’arbre resultat.
Input
6 4 0 8 0 5 -1 2 2 3 0 1 2
Output
[1]
\__[3]
| \__.
| \__.
\__[2]
\__[5]
| \__.
| \__[8]
| \__.
| \__.
\__[4]
\__.
\__.
[23]
\__[0]
| \__.
| \__.
\__[0]
\__[0]
| \__.
| \__[0]
| \__.
| \__.
\__[0]
\__.
\__.
Input
3 7 0 2 0 5 2
Output
[5]
\__[2]
| \__.
| \__.
\__[7]
\__.
\__.
[14]
\__[0]
| \__.
| \__.
\__[0]
\__.
\__.