Nodes dominants en arbre binari-recursiu. S98355


Statement
 

pdf   zip   tar

Un node dominant en un arbre binari és un node que té un valor que és més gran que qualsevol dels nodes que tenen els seus fills esquerre i dret. Implementa un algorisme recursiu que, donat un arbre binary d’enters, retorni la llista de tots els nodes dominants de l’arbre. NOTA IMPORTANT: les fulles de l’arbre MAI són nodes dominants.

/* Pre: a és un arbre binary d'enters. */
/* Post: Retorna una llista amb tots els nodes dominants de l'arbre 
o una llista buida si no n'hi ha cap */
list<int> Dominants(BinaryTree<int> &a) {
}

NOTES IMPORTANTS:

  • L’algorisme ha de ser eficient, és a dir, que no realitzi càlculs innecessaris.

  • Entre els fitxers que s’adjunten en aquest exercici trobaràs el fitxer BinaryTree.hpp que conté la implementació de la classe BinaryTree. No cal que modifiquis aquest fitxer.

  • També trobaràs el fitxer program.cpp i el Makefile per a compilar i generar l’executable. El programa principal ja s’encarrega de llegir les dades de l’arbre i cridar al mètode indicat. Només cal que implementis el mètode Dominants.

  • Es valorarà la correctesa i eficiència de la solució així com la correcta especificació de la precondició, la postcondició, la hipòtesi d’inducció i la funció fita.

  • Per a pujar la solució has de crear el fitxer solution.tar així:

    tar cf solution.tar Dominants.cpp

Entrada

Com a entrada hi haurà els nodes de l’arbre en postordre.

Sortida

Com a sortida es mostrarà l’arbre original i la llista de nodes dominants.

Public test cases
  • Input

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

    Output

    [10]
     \__[3]
     |   \__.
     |   \__.
     \__[9]
         \__[5]
         |   \__.
         |   \__[8]
         |       \__.
         |       \__.
         \__[4]
             \__.
             \__.
    9,10,
    
  • Input

    3 7 0 2 0 8 2

    Output

    [8]
     \__[2]
     |   \__.
     |   \__.
     \__[7]
         \__.
         \__.
    8,
    
  • Input

    3 7 0 2 0 1 2

    Output

    [1]
     \__[2]
     |   \__.
     |   \__.
     \__[7]
         \__.
         \__.
    
    
  • Input

    2 7 0 1 -1

    Output

    [1]
     \__.
     \__[7]
         \__.
         \__.
    
    
  • Information
    Author
    Alejandro Ríos
    Language
    Catalan
    Official solutions
    Make
    User solutions
    Make