コード例 #1
0
def ej_prof():

    b1 = Bosque()        # el bosque vacío

    #                       _nodo
    #   b1: ---------      --------
    #       |   *---|----->| None |
    #       ---------      --------

    assert(len(b1) == 0), "--> Error en __len__ de bosque"

    a1 = Arbol(10, b1)     # plantar el árbol
    print(b1)

    #                       _nodo           _valor _primog _sig_herm
    #   a1: ---------      ----------      --------------------------
    #       |   *---|----->|   *----|----->|  10  |   *   |  None   |
    #       ---------      ----------      -----------|--------------
    #                                                 |
    #                                                 v
    #                                               _nodo (apuntado por b1)
    #                                              --------
    #                                              | None |
    #                                              --------

    assert(a1.raiz() == 10), "--> Error en raíz() de árbol"
    assert(len(a1.hijos()) == 0), "--> Error en hijos() de árbol"
    assert(a1.num_hijos() == 0), "--> Error en núm_hijos() de árbol"
    assert(a1.es_hoja_()), "--> Error en es_hoja_() de árbol"

    b1.add_arbol(a1)     # añadir el árbol al bosque

    #                       _nodo           _valor _primog _sig_herm
    #   a1: ---------      ----------      --------------------------
    #       |   *---|----->|   *----|----->|  10  |   *   |  None   |
    #       ---------      ----------      -----------|--------------
    #                                      ^          |
    #                                      |          v
    #                       _nodo          |        _nodo (ya no apuntado por b1)
    #   b1: ---------      ----------      |       --------
    #       |   *---|----->|   *----|------|       | None |
    #       ---------      ----------              --------

    assert(len(b1) == 1), "--> Error en __len__ de bosque"

    a2 = Arbol(20, b1)     # plantar el árbol

    #                       _nodo           _valor _primog _sig_herm
    #   a2: ---------      ----------      --------------------------
    #       |   *---|----->|   *----|----->|  20  |   *   |  None   |
    #       ---------      ----------      -----------|--------------
    #                                                 |
    #                                                 v
    #                                               _nodo (apuntado por b1)
    #                                              --------
    #                                              |  *---|-----> _valor (10)
    #                                              --------

    assert(a2.raiz() == 20), "--> Error en raíz() de árbol"
    assert(len(a1.hijos()) == 1), "--> Error en hijos() de árbol"
    assert(a1.num_hijos() == 1), "--> Error en núm_hijos() de árbol"
    assert(not a1.es_hoja_()), "--> Error en es_hoja_() de árbol"

    b3 = Bosque()         # el bosque vacío
    a3 = Arbol(30, b3)     # plantar el árbol
    b3.add_arbol(a3)

    #                       _nodo           _valor _primog _sig_herm
    #   a3: ---------      ----------      --------------------------
    #       |   *---|----->|   *----|----->|  30  |   *   |  None   |
    #       ---------      ----------      -----------|--------------
    #                                                 |
    #                                                 v
    #                                               _nodo (apuntado por b3)
    #                                              --------
    #                                              | None |
    #                                              --------

    b4 = Bosque()         # el bosque vacío
    a4 = Arbol(40, b4)     # plantar el árbol

    b5 = Bosque()         # el bosque vacío
    b5.add_arbol(a3)       # añadir el árbol al bosque
    assert(len(b5) == 1), "--> Error en __len__ de bosque"

    b5.add_arbol(a4)       # añadir el árbol al bosque
    assert(len(b5) == 2), "--> Error en __len__ de bosque"

    a5 = Arbol(50, b5)     # plantar el árbol
    assert(a5.raiz() == 50), "--> Error en raíz() de árbol"
    assert(len(a5.hijos()) == 2), "--> Error en hijos() de árbol"
    assert(a5.num_hijos() == 2), "--> Error en núm_hijos() de árbol"
    assert(not a5.es_hoja_()), "--> Error en es_hoja_() de árbol"

    # try:
    #     print(b5[0])
    # except AssertionError:
    #     pass

    assert(b5[1].raiz() == 40), "--> Error en añ_árbol() de bosque"
    assert(b5[2].raiz() == 30), "--> Error en añ_árbol() de bosque"

    print('All tests are ok')
コード例 #2
0
def main():
    # Primero se crea el bosque
    b_a = Bosque()
    # Luego el arbol que contendra al bosque
    a_a = Arbol('A', b_a)

    b_b = Bosque()
    a_b = Arbol('B', b_b)
    b_c = Bosque()
    a_c = Arbol('C', b_c)
    b_d = Bosque()
    a_d = Arbol('D', b_d)

    b_a.add_arbol(a_b)
    b_a.add_arbol(a_c)
    b_a.add_arbol(a_d)
    assert a_c.es_hoja_(), 'C no es un bosque vacio'
    assert len(b_a) == 3, '--> Error al agregar los arboles B,C,D al bosque'

    b_e = Bosque()
    a_e = Arbol('E', b_e)

    b_f = Bosque()
    a_f = Arbol('F', b_f)

    b_b.add_arbol(a_e)
    b_b.add_arbol(a_f)
    assert a_e.es_hoja_(), 'E no es un bosque vacio'
    assert len(b_b) == 2, '--> Error al agregar los arboles E,F al bosque'

    b_j = Bosque()
    a_j = Arbol('J', b_j)
    b_k = Bosque()
    a_k = Arbol('K', b_k)
    b_l = Bosque()
    a_l = Arbol('L', b_l)

    b_f.add_arbol(a_j)
    b_f.add_arbol(a_k)
    b_f.add_arbol(a_l)
    assert len(b_f) == 3, '--> Error al agregar los arboles J,K,L al bosque'

    b_g = Bosque()
    a_g = Arbol('G', b_g)
    b_h = Bosque()
    a_h = Arbol('H', b_h)
    b_i = Bosque()
    a_i = Arbol('I', b_i)

    b_d.add_arbol(a_g)
    b_d.add_arbol(a_h)
    b_d.add_arbol(a_i)
    assert a_h.es_hoja_(), 'C no es un bosque vacio'
    assert len(b_d) == 3, '--> Error al agregar los arboles J,K,L al bosque'

    b_m = Bosque()
    a_m = Arbol('M', b_m)

    b_g.add_arbol(a_m)
    assert len(b_g) == 1, '--> Error al agregar el arbol G al bosque'

    b_p = Bosque()
    a_p = Arbol('P', b_p)
    b_q = Bosque()
    a_q = Arbol('Q', b_q)

    b_m.add_arbol(a_p)
    b_m.add_arbol(a_q)
    assert len(b_m) == 2, '--> Error al agregar los arboles P,Q al bosque'

    b_n = Bosque()
    a_n = Arbol('N', b_n)
    b_o = Bosque()
    a_o = Arbol('O', b_o)

    b_i.add_arbol(a_n)
    b_i.add_arbol(a_o)
    assert len(b_i) == 2, '--> Error al agregar los arboles N,O al bosque'

    print("Numero de nodos: %d" % num_nodos(a_a))
    print("Numero de hojas :%d" % num_hojas(a_a))
    print("Maximo grado: %d" % grado(a_a))
    print("Altura del arbol: %d" % altura(a_a))
    print('Recorrido preorden: ', end='')
    print(preorden(a_a))
    print('Recorrido postorden: ', end='')
    print(postorden(a_a))
    print('Recorrido niveles: ', end='')
    print(niveles(a_a))
    print('Recorrido frontera: ', end='')
    print(frontera(a_a))