Donada la classe Abin que permet gestionar arbres binaris usant memòria dinàmica, cal implementar el mètode
que modifica el contingut de l’arbre del p.i. per tal de guardar un arbre que sigui la suma dels dos arbres donats, l’arbre del p.i. i l’arbre a. La suma de dos arbre binaris és un arbre binari on cada node conté la suma dels nodes de la mateixa posició dels dos arbres a sumar; si un dels nodes a sumar és buit es considera que el seu valor és zero.
Cal enviar a jutge.org la següent especificació de la classe Abin i la implementació del mètode dins del mateix fitxer. Indica dins d’un comentari a la capçalera del mètode el seu cost en funció del nombre d’elements n de l’arbre.
Per testejar la solució, jutge.org ja té implementats la resta de mètodes de la classe Abin i un programa principal que llegeix dos arbres binaris i després crida el mètode suma_2_arbres.
Entrada
L’entrada consisteix en la descripció de dos arbres binaris d’enters (per cada arbre es proporciona el seu recorregut en preordre, en el qual inclou les fulles marcades amb un -1). Per exemple, l’arbre (mira el PDF de l’enunciat)
es descriuria amb
3 0 7 -1 4 -1 -1 2 -1 -1 5 4 -1 -1 7 6 -1 1 -1 -1 -1
Sortida
El contingut dels dos arbre binaris abans i després de cridar el mètode suma_2_arbres.
Observació
Només cal enviar la classe requerida i la implementació del mètode suma_2_arbres amb el seu cost en funció del nombre d’elements n de l’arbre. Pots ampliar la classe amb mètodes privats. Segueix estrictament la definició de la classe de l’enunciat.
Input
-1 -1
Output
. . . .
Input
3 -1 -1 -1
Output
[3] \__. \__. . [3] \__. \__. .
Input
-1 3 -1 -1
Output
. [3] \__. \__. [3] \__. \__. [3] \__. \__.
Input
3 2 -1 -1 -1 3 -1 -1
Output
[3]
\__.
\__[2]
\__.
\__.
[3]
\__.
\__.
[6]
\__.
\__[2]
\__.
\__.
[3]
\__.
\__.
Input
3 -1 -1 3 2 -1 -1 -1
Output
[3]
\__.
\__.
[3]
\__.
\__[2]
\__.
\__.
[6]
\__.
\__[2]
\__.
\__.
[3]
\__.
\__[2]
\__.
\__.
Input
3 2 -1 -1 -1 3 2 -1 -1 -4 -1 -1
Output
[3]
\__.
\__[2]
\__.
\__.
[3]
\__[-4]
| \__.
| \__.
\__[2]
\__.
\__.
[6]
\__[-4]
| \__.
| \__.
\__[4]
\__.
\__.
[3]
\__[-4]
| \__.
| \__.
\__[2]
\__.
\__.
Input
-3 -2 -1 -1 -4 -1 -1 7 5 -1 -1 8 9 -1 -1 4 6 -1 -1 3 -1 -1
Output
[-3]
\__[-4]
| \__.
| \__.
\__[-2]
\__.
\__.
[7]
\__[8]
| \__[4]
| | \__[3]
| | | \__.
| | | \__.
| | \__[6]
| | \__.
| | \__.
| \__[9]
| \__.
| \__.
\__[5]
\__.
\__.
[4]
\__[4]
| \__[4]
| | \__[3]
| | | \__.
| | | \__.
| | \__[6]
| | \__.
| | \__.
| \__[9]
| \__.
| \__.
\__[3]
\__.
\__.
[7]
\__[8]
| \__[4]
| | \__[3]
| | | \__.
| | | \__.
| | \__[6]
| | \__.
| | \__.
| \__[9]
| \__.
| \__.
\__[5]
\__.
\__.
Input
7 5 -1 -1 8 9 -1 -1 4 6 -1 -1 3 -1 -1 3 0 7 -1 4 -1 -1 2 -1 -1 5 4 -1 -1 7 6 -1 1 -1 -1 -1
Output
[7]
\__[8]
| \__[4]
| | \__[3]
| | | \__.
| | | \__.
| | \__[6]
| | \__.
| | \__.
| \__[9]
| \__.
| \__.
\__[5]
\__.
\__.
[3]
\__[5]
| \__[7]
| | \__.
| | \__[6]
| | \__[1]
| | | \__.
| | | \__.
| | \__.
| \__[4]
| \__.
| \__.
\__[0]
\__[2]
| \__.
| \__.
\__[7]
\__[4]
| \__.
| \__.
\__.
[10]
\__[13]
| \__[11]
| | \__[3]
| | | \__.
| | | \__.
| | \__[12]
| | \__[1]
| | | \__.
| | | \__.
| | \__.
| \__[13]
| \__.
| \__.
\__[5]
\__[2]
| \__.
| \__.
\__[7]
\__[4]
| \__.
| \__.
\__.
[3]
\__[5]
| \__[7]
| | \__.
| | \__[6]
| | \__[1]
| | | \__.
| | | \__.
| | \__.
| \__[4]
| \__.
| \__.
\__[0]
\__[2]
| \__.
| \__.
\__[7]
\__[4]
| \__.
| \__.
\__.