Laboratorio de árboles y montículos en C

ABB

Árbol Binario de Búsqueda sin duplicados.

Abrir guía de ABB

1 Preparar

Los ejemplos construyen el estado mediante operaciones públicas reales.

2 Predecir

Formula una hipótesis antes de revelar el siguiente frame canónico.

Progreso conceptual de esta sesión: 0 aciertos de 0 intentos.

3 Ejecutar y visualizar

5 Relacionar con C

Codigo C: Insertar

/**
 * @brief Inserta un valor en el árbol binario de búsqueda.
 * @param nodo Puntero a la raíz del árbol.
 * @param valor Valor a abb_insertar.
 * @return Puntero a la raíz actualizada.
 */
ABBNodo* abb_insertar(ABBNodo* nodo, int valor) {
    if (nodo == NULL) {
        ABBNodo* nuevo = malloc(sizeof *nuevo);
        if (nuevo == NULL) {
            return NULL;
        }
        nuevo->valor = valor;
        nuevo->izquierdo = nuevo->derecho = NULL;
        return nuevo;
    }
    if (valor < nodo->valor)
        nodo->izquierdo = abb_insertar(nodo->izquierdo, valor);
    else if (valor > nodo->valor)
        nodo->derecho = abb_insertar(nodo->derecho, valor);
    return nodo;
}

3 Controlar la ejecución

Actual: +0.00x (1.00x real)

Función: — · Profundidad: — · Fase: — · Concepto: —

Paso: 0/0

4 Comprender

Arbol binario de busqueda sin duplicados: todo valor menor va al subarbol izquierdo y todo valor mayor al derecho. En la simulacion revisa la ruta de comparaciones y confirma que la propiedad de orden se preserve despues de cada insercion o eliminacion.

Prepara una operación para observar ruta, caso e invariante.

Condición, ruta y caso

Sin frame.

Pila recursiva y retornos

Sin llamadas.

Invariante y evidencia

Sin verificación.

Variables C

Sin variables.

Memoria y enlaces

Sin transición de memoria.

Relaciones estructurales

Sin relaciones.

6 Comparar

Ambos lados reciben copias independientes de la misma entrada inmutable.

Prepara una comparación para estudiar forma, altura, ajustes, costo e invariante.

7 Reflexionar

Consola C (printf)

terminal

Historial

    Estructura del TAD
    typedef struct ABBNodo {
        int valor;                
        struct ABBNodo *izquierdo;   
        struct ABBNodo *derecho;     
    } ABBNodo;