Suma dels valors d'un arbre a profunditat parell X21451


Statement
 

pdf   zip   tar

html

Implementeu una funció RECURSIVA que, donat un arbre binari d’enters, retorna la suma dels seus valors que es troben a profunditat parell. L’arrel es troba a profunditat 0 (parell), els nodes dels seus fills a profunditat 1 (no parell), i així successivament. Aquesta és la capcelera:

// Pre:
// Post: Retorna la suma dels valors de t a profunditat parell
int sumAtDepthEven(BinaryTree<int> t);

Aquí tenim un exemple de paràmetre d’entrada de la funció i la corresponent sortida:

3(1(,5),4(1,)) => 9

Fixeu-vos que l’enunciat d’aquest exercici ja ofereix uns fitxers que haureu d’utilitzar per a compilar: Makefile, program.cpp, BinaryTree.hpp, sumAtDepthEven.hpp. Us falta crear el fitxer sumAtDepthEven.cpp amb els corresponents includes i implementar-hi la funció anterior. Quan pugeu la vostra solució al jutge, només cal que pugeu un tar construït així:

tar cf solution.tar sumAtDepthEven.cpp

Entrada

L’entrada té un nombre arbitrari de casos. Cada cas consisteix en una línia amb un string describint un arbre binari d’enters. Fixeu-vos en que el programa que us oferim ja s’encarrega de llegir aquestes entrades. Només cal que implementeu la funció abans esmentada.

Sortida

Per a cada cas, la sortida conté la corresponent suma dels nodes de l’arbre a profunditat parell. Fixeu-vos en que el programa que us oferim ja s’encarrega d’escriure aquesta suma. Només cal que implementeu la funció abans esmentada.

Observació

La vostra funció i subfuncions que creeu han de treballar només amb arbres. Heu de trobar una solució RECURSIVA del problema. En les crides recursives, incloeu la hipòtesi d’inducció, és a dir una explicació del que es cumpleix després de la crida, i també la funció de fita/decreixement o una justificació de perquè la funció recursiva acaba.

Necessitareu crear alguna funció recursiva auxiliar amb més paràmetres per tal d’abordar més fàcilment el problema i també per a produïr una solució més eficient capaç de superar tots els jocs de proves.

Public test cases
  • Input

    7(2(5,3(4,5)),1)
    6(7(8,7),8(4,6))
    2(4(7(5,3),),2(8,7(2(7,),)))
    3(7(5,1),3(5,4))
    7(3,4)
    6(,5(7,2))
    2
    4(6(1,3),)
    4(,8(8(1,5),4(7,)))
    4
    

    Output

    15
    31
    31
    18
    7
    15
    2
    8
    16
    4
    
  • Input

    0(55(29,-47(-15,98)),-18)
    -94(82(-21,80),-16(63,-85))
    -27(-50(6(13,-56),),23(2,36(-2(-37,),)))
    -56(-5(-100,-37),7(-70,-18))
    5(-3,-32)
    50(,-23(-17,91))
    41
    91(59(75,-46),)
    55(,62(-31(-10,69),-74(67,)))
    -56
    12(96(-22(88,),31(15,-92)),-47(70,))
    -58(4,-1(27,-35))
    78
    -91(89(35(-95,-24),-50(,77)),-95)
    -69
    89(-93(,-72),-31(-76,-91))
    -25(93,76)
    32(-71,73(-68(,-12(,-70)),-86(-61(-68,58),-39)))
    68(-10(22,60),91)
    89(-7(-20,37),)
    

    Output

    -18
    -57
    -20
    -281
    5
    124
    41
    120
    -50
    -56
    91
    -66
    78
    -106
    -69
    -150
    -25
    -202
    150
    106
    
  • Information
    Author
    PRO1
    Language
    Catalan
    Official solutions
    Make
    User solutions
    Make