ARBRE X64750


Statement
 

pdf   zip   tar

html

En aquest exercici considerarem arbres que tenen en els seus nodes els operands +,-,*, i valors numèrics. Per exemple, l’arbre -(+(+(5,2),-(3,4)),-(5,1)). També considerarem un valor independent que haurà de ser buscat a l’arbre.

EXERCICI:

Implementeu una funció que, donat un arbre binari de valors i els operands +,-,*, retorna el nivell en que es troba el numero buscat per primera vegada,comptant que l’arrel és el nivell 0, si aquest valor no està a l’arbre, ha de retornar -1 . Aquesta és la capçalera:

// Pre:  t és un arbre no buit que representa una expressió correcta
//      sobre els naturals i els operadors +,-,*.
//       Les operacions no produeixen errors d'overflow.
// Post: Retorna el nombre de subarbres de t que s'avaluen a x.

int numberSubtreesEvaluateToParam(const BinaryTree<string> &t, int x){

Aquí tenim un exemple de paràmetre d’entrada de la funció i la corresponent sortida: int numberSubtreesEvaluateToParam(-(+(+(5,2),-(3,4)),-(5,1)), 6) = -1

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

tar cf solution.tar numberSubtreesEvaluateToParam.cpp

Entrada

L’entrada té un nombre arbitrari de casos. Cada cas consisteix en una línia amb un string descrivint un arbre binari d’strings i també un valor independent que haurà de ser buscat a l’arbre. 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 Aqui teniu un exemple:

-(*(-(10,5),8),+(+(13,5),+(7,3)))
8

Sortida

Per a cada cas, la sortida conté el corresponent numero de nodes que es visita per trobar per primera vegada el valor que cal cercar dins de l’arbre. Fixeu-vos en que el programa que us oferim ja s’encarrega d’escriure aquest valor. Només cal que implementeu la funció abans esmentada. Aqui teniu la sortida esperada del programa anterior:

2
Public test cases
  • Input

    -(+(+(5,2),-(3,4)),-(5,1))
    6
    *(4,*(2,3))
    3
    -(-(+(8,1),7),+(6,7))
    8
    -(2,-(5,8))
    5
    *(-(-(8,3),*(8,1)),-(4,*(8,5)))
    8
    +(4,4)
    4
    -(-(5,5),*(7,2))
    5
    2
    6
    -(+(8,8),+(3,6))
    9
    *(6,-(+(5,4),+(4,3)))
    4
    

    Output

    -1
    2
    3
    2
    3
    1
    2
    -1
    -1
    3
    
  • Input

    +(5,2)
    5
    -(+(5,13),+(11,+(*(*(+(4,11),-(2,10)),-(*(2,12),-(6,6))),2)))
    6
    -(11,-(*(*(*(12,1),3),*(-(11,8),-(13,3))),*(1,11)))
    1069
    +(-(+(3,-(*(+(-(4,11),-(11,9)),*(-(2,12),-(1,6))),-(-(-(6,1),+(10,6)),+(-(8,9),8)))),-(-(*(3,1),+(-(+(6,5),13),*(13,10))),+(*(-(*(13,12),-(2,8)),*(4,3)),-(-(-(7,4),*(6,3)),11)))),*(7,-(-(4,*(+(-(9,2),*(4,7)),*(-(7,6),-(4,13)))),*(10,-(12,4)))))
    12
    +(-(-(-(+(4,*(7,*(13,2))),-(2,5)),-(11,8)),-(+(*(*(5,4),-(*(1,4),7)),-(7,*(5,10))),-(9,+(8,2)))),*(12,+(4,5)))
    -60
    +(*(+(4,6),-(+(-(*(+(6,8),*(3,+(8,12))),13),+(5,8)),*(3,6))),-(11,2))
    8
    -(*(-(*(8,4),*(7,5)),+(*(*(2,-(3,12)),*(-(1,3),*(4,4))),1)),+(-(*(12,-(-(1,8),*(3,8))),*(9,-(*(6,10),*(9,8)))),12))
    72
    13
    13
    -(+(7,-(12,13)),*(3,+(+(7,5),-(3,6))))
    -3
    +(*(6,+(+(11,3),+(*(9,12),*(6,1)))),+(9,*(*(12,8),*(2,3))))
    9
    +(-(-(+(10,9),+(11,10)),-(4,1)),*(-(*(1,9),9),+(*(2,10),-(*(12,7),8))))
    2
    +(8,+(*(+(-(2,13),1),6),-(-(8,13),6)))
    4
    -(-(*(5,3),-(12,10)),+(-(-(-(*(12,-(12,10)),8),*(-(-(-(11,10),+(1,12)),6),+(3,4))),*(12,9)),-(6,10)))
    2
    -(*(-(10,5),8),+(+(13,5),+(7,3)))
    8
    -(+(+(-(-(5,1),+(6,4)),+(*(10,+(12,7)),*(2,-(3,1)))),+(-(10,-(*(+(5,11),*(*(7,4),*(2,7))),-(12,3))),*(6,3))),9)
    7
    

    Output

    1
    6
    -1
    7
    -1
    7
    -1
    0
    -1
    5
    4
    -1
    -1
    2
    6
    
  • Information
    Author
    Alumnepro12223_
    Language
    Catalan
    Official solutions
    Make
    User solutions