Diferència Màxima. X71480


Statement
 

pdf   zip   tar

Les fulles d’un arbre binari són els nodes que no tenen ni fill dret ni fill esquerre. Un camí és una seqüència de nodes d’un arbre A [a1,a2,,ai,ai+1,,an][a_1, a_2, \dots, a_i, a_{i+1}, \dots, a_n] tal que a1a_1 és l’arrel d’AA, ana_n és una fulla, i per a tot aia_i (i<ni < n) tenim que ai+1a_{i+1} és el fill de aia_i. Un arbre A té tants camins com fulles. La mida d’un camí és el nombre de nodes de què es composa.

Feu la funció recursiva

int diferenciaMaxima (const arbreBin<int>);

tal que, donat un arbre binari A, torni la diferència entre la mida del camí més llarg i el més curt d’A.

Per exemple, per a l’arbre A1, tenim els camins [1,2,5],[1,2,6],[1,3,7],[1,3,8][1,2,5],[1,2,6],[1,3,7],[1,3,8], i tots tenen mida 33. Per tant, diferenciaMaxima(A1) tornarà 00.

L’arbre A2 té els camins [1,2],[1,3,7][1,2],[1,3,7] de mides 22 i 33, i per tant, diferenciaMaxima(A2) tornarà 11.

L’arbre A3 té els camins [1,2],[1,3,7],[1,3,2][1,2],[1,3,7],[1,3,2] de mides 22, 33 i 33, i per tant, diferenciaMaxima(A3) tornarà 11.


         A1            A2         A3

         1             1           1
        / \           / \         / \
       2   3         2   3       2   3
      / \ / \           /           / \
     5  6 7  8         7           7   2
                    

Entrada

La funció rep un arbre binari d’enters A.

Sortida

La diferència entre la mida del camí més llarg i el més curt d’A.

Observació

Heu d’enviar la solució comprimida en un fitxer .tar:

tar cvf program.tar diferenciaMaxima.cpp

Observeu que per compilar us donem el Makefile,

la capçalera del mòdul funcional diferenciaMaxima.hpp,

la implementació de l’arbre binari arbreBin.hpp i el programa principal program.cpp.

Jutge.org també us donarà un semàfor verd si envieu una solució iterativa, però no serà correcte ja que l’enunciat del problema demana que la solució enviada sigui recursiva.

Public test cases
  • Input

    10
    
    10 0
    7 1
    4 1
    8 0
    5 1
    2 2
    9 0
    6 1
    3 1
    1 2
    

    Output

    [1]
     \__[3]
     |   \__[6]
     |   |   \__[9]
     |   |   |   \__.
     |   |   |   \__.
     |   |   \__.
     |   \__.
     \__[2]
         \__[5]
         |   \__[8]
         |   |   \__.
         |   |   \__.
         |   \__.
         \__[4]
             \__[7]
             |   \__[10]
             |   |   \__.
             |   |   \__.
             |   \__.
             \__.
    
    1
    
  • Input

    6
    
    6 0
    4 1
    5 0
    2 2
    3 0
    1 2
    
    

    Output

    [1]
     \__[3]
     |   \__.
     |   \__.
     \__[2]
         \__[5]
         |   \__.
         |   \__.
         \__[4]
             \__[6]
             |   \__.
             |   \__.
             \__.
    
    2
    
  • Information
    Author
    PRO1-Vilanova
    Language
    Catalan
    Official solutions
    Make
    User solutions
    Make