Eliminar nodes amb un fill d'un arbre binari usant memòria dinàmica X73662


Statement
 

pdf   zip   tar

html

Escriviu el codi del mètode elimina_nodes_amb_un_fill de la classe arbreBin que, donat un arbre binari d’enters, elimina els nodes que només tenen un fill.

void elimina_nodes_amb_un_fill(); /* Pre: true */ /* Post: S'han eliminat els nodes del p.i. que tenen un fill */

Entrada

Com a entrada hi haurà la mida de l’arbre i els nodes de l’arbre binari en postordre. Per cada node s’indica el seu valor i el nombre de fills (2 fills, -1 indica un fill esquerra, 1 indica un fill dret o 0 fills).

Per llegir els arbres, s’ha utilitzat l’operador >> que es troba definit a la classe arbreBin.

Sortida

Com a sortida es mostrarà l’estructura de l’arbre binari abans i desprès d’haver eliminat els nodes que només tenen un fill.

Per escriure els arbres, s’ha utilitzat l’operador << que es troba definit a la classe arbreBin.

Observació

Feu la solució usant els atributs privats de la classe enlloc dels mètodes públics. Per això s’ha definit a la part privada de la classe aquest mètode que també heu d’implementar:

static node_arbre* elimina_nodes_amb_un_fill(node_arbre* p); /* Pre: true */ /* Post: S'han eliminat els nodes de l'arbre apuntat per p que tenen un fill. Retorna el punter on s'inicia l'arbre modificat */

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

tar cvf program.tar arbreBin_elimina_nodes_amb_un_fill.cpp

Observeu que per compilar us donem el Makefile, la classe arbreBin amb tots els seus mètodes implementats excepte els dos mètodes elimina_nodes_amb_un_fill i el programa principal program.cpp.

Public test cases
  • Input

    7
    3 0
    5 0
    8 2
    4 0
    7 1
    2 -1
    10 2
    

    Output

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

    7
    2 0
    7 0
    1 1
    3 0
    5 -1
    6 2
    8 2
    

    Output

    [8]
     \__[6]
     |   \__[5]
     |   |   \__.
     |   |   \__[3]
     |   |       \__.
     |   |       \__.
     |   \__[1]
     |       \__[7]
     |       |   \__.
     |       |   \__.
     |       \__.
     \__[2]
         \__.
         \__.
    [8]
     \__[6]
     |   \__[3]
     |   |   \__.
     |   |   \__.
     |   \__[7]
     |       \__.
     |       \__.
     \__[2]
         \__.
         \__.
  • Information
    Author
    Neus Català - Jordi Esteve
    Language
    Catalan
    Official solutions
    Make
    User solutions
    Make