Menu
Coddy logo textTech

Sucesor de un valor

Lección 16 de 16 del curso Árbol AVL - Serie de Estructuras de Datos #10 de Coddy.

El sucesor in-order de un valor es el valor más pequeño en el árbol que es estrictamente mayor que él, el valor que vendría justo después de él en una lista ordenada. Si el valor es el máximo en el árbol, no tiene sucesor.

Puedes encontrarlo en una sola pasada sin necesidad de ordenar nada: baja desde la raíz y, cada vez que pases a la derecha de un valor que es demasiado pequeño, recuerda el último nodo desde el cual te moviste a la izquierda como tu mejor candidato hasta el momento.

challenge icon

Desafío

Fácil

Escribe una función successor(tree, value) que devuelva el valor más pequeño en el árbol estrictamente mayor que value, o -1 si no existe ninguno.

Pruébalo tú mismo

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "avltree.h"
#include "solution.h"

int main(void) {
    AVLTree* tree = AVLTree_create();
    char line1[4096];
    fgets(line1, sizeof(line1), stdin);
    char* tok = strtok(line1, " \n");
    while (tok != NULL) {
        AVLTree_insert(tree, atoi(tok));
        tok = strtok(NULL, " \n");
    }
    char line2[256];
    fgets(line2, sizeof(line2), stdin);
    int p0 = atoi(strtok(line2, " \n"));
    int result = successor(tree, p0);
    printf("%d\n", result);
    return 0;
}

Todas las lecciones de Árbol AVL - Serie de Estructuras de Datos #10