Quick actions

cmd+k|ctrl+k

Navigation

Languages

5_16_Algoritmos_fundamentales_desafio_5

Snippet info

Language

Python

Visibility

public

Author

jorgetoto2006new

Created

2024-11-08T02:00:28.379898Z

Updated

2024-11-08T02:00:28.379898Z

# Clase Nodo para representar cada estudiante con su promedio
class Nodo:
    def __init__(self, nombre, promedio):
        self.nombre = nombre
        self.promedio = promedio
        self.izq = None
        self.der = None

# Función para insertar un nuevo estudiante en el árbol
def insertar_nodo(raiz, nombre, promedio):
    # Si el árbol está vacío, crea un nuevo nodo
    if raiz is None:
        return Nodo(nombre, promedio)
    
    # Si el promedio es menor, insertarlo en el subárbol izquierdo
    if promedio < raiz.promedio:
        raiz.izq = insertar_nodo(raiz.izq, nombre, promedio)
    # Si el promedio es mayor o igual, insertarlo en el subárbol derecho
    else:
        raiz.der = insertar_nodo(raiz.der, nombre, promedio)
    
    return raiz

# Función para realizar un recorrido en inorden
def recorrido_inorden(nodo):
    if nodo:
        # Primero recorre el subárbol izquierdo
        recorrido_inorden(nodo.izq)
        # Luego procesa el nodo actual
        print(f"{nodo.nombre}: {nodo.promedio}")
        # Finalmente recorre el subárbol derecho
        recorrido_inorden(nodo.der)

# Lista de estudiantes con sus promedios
estudiantes = [
    ("Ana", 85),
    ("Carlos", 92),
    ("Elena", 88),
    ("Jorge", 79),
    ("Luis", 95),
    ("María", 82),
]

# Construcción del árbol binario de búsqueda
raiz = None
for nombre, promedio in estudiantes:
    raiz = insertar_nodo(raiz, nombre, promedio)

# Mostrar los estudiantes en orden ascendente de promedio
print("Estudiantes en orden ascendente por promedio:")
recorrido_inorden(raiz)
INFO