Está en la página 1de 12

Universidad kuepa

Nombre del alumno: Miguel Ángel Martínez Flores

Materia: Algoritmos Gráficos

Profesor: Sebastián Pérez


Código y capturas de pantalla del problema 1

# creamos una funcion para realizar la busqueda binaria


def busqueda_binaria(lista, x):
# ordenamos la lista
lista_ordenada = sorted(lista)
izq, der = 0, len(lista_ordenada) - 1

while izq <= der:


medio = (izq + der) // 2
pais = lista_ordenada[medio]

if pais == x:
# Encuentra el índice del país en la lista original
indice_original = lista.index(pais)
return indice_original
elif pais < x:
izq = medio + 1
else:
der = medio - 1

return -1

# creamos una función para realizar la busqueda secuencial


def busqueda_secuencial(lista, x):
for i in range(len(lista)):
if lista[i] == x:
return i
return -1

# creamos la lista con paises


paises = ["Estados Unidos", "Canada", "Mexico", "Brasil", "Argentina", "España", "Francia",
"Alemania", "China", "India"]
while True:
print("Menu")
print("1)Busqueda binaria de un pais")
print("2)Busqueda secuencial de un pais")
print("3)Agregar un pais")
print("4)Eliminar un pais")
print("5)Salir")
# le pedimos al usuario su opcion
opcion = input("Seleccione una opción: ")

if opcion == "1":
print("Busqueda binaria:")
# pedimos el pais a buscar
pais = input("Ingresa el pais a buscar:")
# realizamos al busqueda binaria
busqueda = busqueda_binaria(paises,pais)
if busqueda == -1:
print("No se encuentro el pais")
else:
print("El pais se encuentra en posicion ",busqueda + 1)
print("##############################")

elif opcion == "2":


print("Busqueda secuencial")
# pedimos el pais a buscar
pais = input("Ingresa el pais a buscar:")
# realizamos al busqueda binaria
busqueda = busqueda_secuencial(paises,pais)
if busqueda == -1:
print("No se encuentro el pais")
else:
print("El pais se encuentra en posicion ",busqueda + 1)
print("##############################")

elif opcion == "3":


print("Agregar pais")
# pedimos el pais a agregar
pais = input("Ingresa el pais a agregar:")
# verificamos si el pais ya existe
if pais in paises:
print("El pais ya existe")
else:
# en caso de no existir lo agregamos
paises.append(pais)
print("Pais agregado con exito")
print("##############################")

elif opcion == "4":


print("Eliminar pais")
# pedimos el pais a eliminar
pais = input("Ingresa el pais a eliminar")
# verificamos si existe
if pais in paises:
# eliminamos el pais
paises.remove(pais)
print("Pais eliminado con exito")
else:
print("El pais no a sido agregado")
print("##############################")

elif opcion == "5":


print("Gracias por usar el programa")
break

else:
print("Opcion no disponible ")
print("##############################")
Inicio

paises

Siempre

Menu
1) búsqueda binaria
2) búsqueda secuencial
3) Agregar país
4) Eliminar país
5) Salir

opcion pais
paises.append(pais)

Si
opcion=1 pais
busqueda_binaria(pais)

No
Si

pais Sí No opcion=3
opcion=2
busqueda_secuencial(pais)

No
Opcion no opcion=4
No opcion=5
disponible No

Si
Si

pais
paises.remove(pais)
Fin
Código y capturas de pantalla del problema 2
# Creamos el arbol binario usando lista
arbol_binario = [50, [30, [20, [], []], []], [70, [], []]]

# Función para agregar un dato al árbol binario


def agregar_dato(arbol, dato):
if arbol:
# Si el dato es menor que el nodo actual, buscar en el subárbol izquierdo
if dato < arbol[0]:
# Si hay un subárbol izquierdo, recursivamente agregar el dato allí
if arbol[1]:
agregar_dato(arbol[1], dato)
else:
# Si no hay sub arbol izquierdo lo creamos
arbol[1] = [dato, [], []]
else:
# Si el dato es mayor que el nodo actual nos vamos al derecho
if arbol[2]:
# Si hay un sub arbol derecho llegamos recrusivamente
agregar_dato(arbol[2], dato)
else:
# Si no hay sub arbol derecho creamos uno
arbol[2] = [dato, [], []]

# Función para realizar un recorrido inorden del arbol binario


def inorden(arbol):
if arbol:
# Recorrer el sub arbol izquierdo
inorden(arbol[1])
# Imprimir el nodo actual
print(arbol[0])
# Recorrer el sub arbol derecho
inorden(arbol[2])

# Función para buscar un nodo en el árbol binario


def buscar(arbol, dato):
if not arbol:
#Si el arbol esta vacio el dato no existe
return False
if arbol[0] == dato:
# en caso de encontrar el dato
return True
elif dato < arbol[0]:
# si el dato es menor buscamos del lado izquierdo
return buscar(arbol[1], dato)
else:
# en caso contrario buscamos del lado derecho
return buscar(arbol[2], dato)

while True:
print("Menu")
print("1) Agregar un dato")
print("2) Recorrer el árbol")
print("3) Buscar nodo")
print("4) Salir")
# le pedimos al usuario su opcion
opcion = input("Seleccione una opción: ")

if opcion == "1":
print("Agregar un dato al arbol")
dato = int(input("Ingrese el dato a agregar: "))
#Agregamos el dato al arbol
agregar_dato(arbol_binario, dato)
print("Dato agregado con éxito")

elif opcion == "2":


print("Recorrido Inorden del arbol:")
# Realizar un recorrido inorden y mostrar los nodos
inorden(arbol_binario)

elif opcion == "3":


print("Buscar un dato en el arbol")
dato = int(input("Ingrese el dato a buscar: "))
# buscamos el dato
encontrado = buscar(arbol_binario, dato)
if encontrado:
print("El nodo con el dato",dato,"se encuentra en el arbol")
else:
print("No se encontro en dato en el arbol")

elif opcion == "4":


# Salir del programa si el usuario elige la opción 4
print("Gracias por usar el programa.")
break

else:
# Mostrar un mensaje si se ingresa una opción inválida
print("Opcion no valida")
Siempre
Inicio

Menu
1) Agregar dato
arbol_binario
2) Recorrer arbol
3) Buscar nodo
4) Salir

agregar_dato

Si
dato
opcion=1 agregar_dato(dato)
inorden

No
Si
Inorden ()
opcion=2
buscar
No

Si
opcion=3 dato
buscar(dato)

Opcion no
disponible
opcion=4 Fin

También podría gustarte