L'Arbre Escorat (2) U15608


Statement
 

pdf   zip   main.py

thehtml

Donat un arbre (general) de naturals, el seu pes és la suma dels valors en els seus nodes i la seva mida és el nombre de nodes que té.

Escorar un arbre és transformar-lo de manera que, per a tots els seus nodes, els fills estiguin ordenats creixentment per pes, d’esquerra a dreta. En cas que dos fills pesin el mateix, els ordenarem d’acord a la seva mida, també creixentment.

Noteu que a l’arbre hi haurà els mateixos nodes abans i després d’escorar, però col·locats de manera diferent, i també hi ha els mateixos camins abans i després però disposats de manera diferent.

Us demanem, doncs, que feu una funció escorar(a) i l’afegiu al fitxer code.py tal com s’especifica a les Observacions.

Paràmetres i retorn

El paràmetre de la funció escorar(a) és una instància de la classe Arbre

Els valor en cada node de l’arbre és un nombre enter positiu.

La funció escorar(a) ha de retornar tres coses: el pes de l’arbre (un nombre enter), la mida de l’arbre (un nombre enter) i l’arbre escorat (instància d’Arbre) (en aquest ordre!).

Entrada

L’entrada al programa serà la descripció d’un arbre en preordre, en el que al valor de cada node li segueix el seu nombre de fills.

Vegeu els exemples del joc de proves públic.

Sortida

El programa ha d’escriure el preordre i el postordre de l’arbre escorat, amb els valors dels nodes separat per ’,’. El preordre i el postordre han d’estar en línies separades

Vegeu els exemples del joc de proves públic.

Observacions

Heu de baixar-vos el fitxer code.py (icona de la serp). Aquest fitxer és un programa amb tot el que cal per executar els jocs de prova públics. Només falta, clar, la funció que us demana l’enunciat. Aquest fitxer l’heu de completar amb el codi que falta, i això, tot, és el que heu d’enviar al Jutge com a solució.

Dins el fitxer code.py teniu la classe Arbre. Enteneu-la abans de procedir. És molt senzilla. No caldrà que la vostra solució faci cap import ni res. Tot el codi que us cal el teniu dins de code.py.

Cal considerar que la classe Arbre no té definit l’operador < per tant no es poden comparar les instàncies d’Arbre. Si feu servir sort, recordeu que hi ha un paràmetre key que us permet extreure la informació que interessa comparar d’allò que esteu ordenant.

L’eficiència i la qualitat de la solució es tindran en compte a la correcció manual.

Public test cases
  • Input

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

    Output

    7,8,4,5,3,0,6,2,1,5,8,9
    8,5,6,0,3,4,1,5,8,9,2,7
    
  • Input

    2 0
    
    

    Output

    2
    2
    
  • Input

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

    Output

    1,2,5,6,4,8,9,10,3,7,11,12
    5,6,2,8,9,10,4,11,12,7,3,1
    
  • Input

    1 2  100 2  50 3  15 0  10 0
    5 0  30 0  10 2  3 0  2 1  1 0
    

    Output

    1,10,3,2,1,100,30,50,5,10,15
    3,1,2,10,30,5,10,15,50,100,1
    
  • Information
    Author
    Jordi Delgado
    Language
    Catalan
    Official solutions
    Python
    User solutions
    Python