SEGUNDO PARCIAL


Parte 1

Solución 1:

Identificación y representación grafica:

Listas ligadas

Seudocódigo

clase ArbolGeneral:

raiz = null

función __init__(self, raiz):

self.raiz = raiz

función agregar_nodo(self, valor, padre):

nuevo_nodo = NodoArbolGeneral(valor)

si padre es null entonces

self.raiz = nuevo_nodo

sino

padre.hijos.agregar(nuevo_nodo)

función buscar_nodo(self, valor):

nodos_por_visitar = [self.raiz]

mientras nodos_por_visitar no esté vacío hacer

nodo_actual = nodos_por_visitar.quitar(0)

si nodo_actual.valor es igual a valor entonces

retornar nodo_actual

nodos_por_visitar.extend(nodo_actual.hijos)

retornar null

función imprimir_arbol(nodo, nivel):

si nodo no es null entonces

imprimir " " * nivel + nodo.valor

para cada hijo en nodo.hijos hacer

imprimir_arbol(hijo, nivel + 2)

Listas Generalizadas

Seudocódigo

clase Nodo:

valor = null

hijos = []

función __init__(self, valor):

self.valor = valor

self.hijos = []

función agregar_hijo(self, hijo):

self.hijos.agregar(hijo)

función __str__(self):

retornar a cadena(self.valor)

clase ArbolGeneralizado:

raiz = null

función __init__(self, raiz):

self.raiz = raiz

función agregar_nodo(self, valor, hijos, padre):

nuevo_nodo = Nodo(valor)

si padre es null entonces

self.raiz = nuevo_nodo

sino

padre.agregar_hijo(nuevo_nodo)

si hijos no es null entonces

para cada hijo en hijos hacer

nuevo_nodo.agregar_hijo(hijo)

función buscar_nodo(self, valor):

nodos_por_visitar = [self.raiz]

mientras nodos_por_visitar no esté vacío hacer

nodo_actual = nodos_por_visitar.quitar(0)

si nodo_actual.valor es igual a valor entonces

retornar nodo_actual

nodos_por_visitar.extend(nodo_actual.hijos)

retornar null

función imprimir_arbol(nodo, nivel):

si nodo no es null entonces

imprimir " " * nivel + a cadena(nodo)

para cada hijo en nodo.hijos hacer

imprimir_arbol(hijo, nivel + 2)

Parte 2

Solución 2 COMPLETA

¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar