Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: freshhprince en 1 Noviembre 2021, 04:03 am



Título: Ayuda con un arbol binario
Publicado por: freshhprince en 1 Noviembre 2021, 04:03 am
Hola necesito ayuda con este programa, funciona bien pero necesito insertarle la función de eliminar nodo, pero no se como hacerlo, soy principiante por favor ayuda;(
O algún programa de búsqueda binaria que puedan pasarme estaría cool

Código:

#include <stdio.h>
#define MAX 1023
#include <conio.h>
#include <stdlib.h>

int arbolBusquedaBinaria[MAX];



int buscar(int arbolBusquedaBinaria[], int x, int i){
    if(arbolBusquedaBinaria[i] == 0){
        //Busqueda sin exito: en arbolBusquedaBinaria[0]...
        //...se guarda la posicion donde no se encontro x...
        //Lo anterior con el ojbjeto que la funcion insertar...
        //...sepa donde insertar...
        arbolBusquedaBinaria[0] = i;
        return 0;
    }
    if(arbolBusquedaBinaria[i] < x)
        return buscar(arbolBusquedaBinaria, x, 2*i + 1);
    else if(arbolBusquedaBinaria[i] > x)
        return buscar(arbolBusquedaBinaria, x, 2*i);
        else return i;
}


int buscarMin(int arbolBusquedaBinaria[]){
    int i = 1, j;
    while(arbolBusquedaBinaria[i] != 0){
        j = arbolBusquedaBinaria[i];
        i = 2 * i;
    }
    return j;
}
int buscarMax(int arbolBusquedaBinaria[]){
    int i = 1, j;
    while(arbolBusquedaBinaria[i] != 0){
        j = arbolBusquedaBinaria[i];
        i = 2 * i + 1;
    }
    return j;
}


void insertar(int arbolBusquedaBinaria[],int x){
int posicion;
posicion = buscar(arbolBusquedaBinaria,x,1);
if(posicion != 0)
printf("\n El %i ya esta insertado", x);
else
arbolBusquedaBinaria[arbolBusquedaBinaria[0]]=x;
}

int main()
{
    int i, bandera = 1, n;
    printf("\t\t\t\tBienvenido,puedes generar un arbol de busqueda binario");
    printf("\n\n\nCuantos nodos tiene tu arbol binario?: ");
    scanf("%i", &n);
    printf("\nDame el arbol: ");
    for(i = 1; i <= n; i++)
        scanf("%i", &arbolBusquedaBinaria[i]);
    printf("\nElemento minimo: %i", buscarMin(arbolBusquedaBinaria));
    printf("\nElemento maximo: %i", buscarMax(arbolBusquedaBinaria));
    while(bandera){
        printf("\n\n1.- Buscar un numero:");
        printf("\n\n2.- Insertar un numero:");
        printf("\n\n3.- Eliminar un numero:\n");
        printf("\n\n4.- Salir");
        printf("Opcion?: "); scanf("%i", &n);
        if(n == 1){
            printf("\nDame el numero a buscar: ");
            scanf("%i", &n);
            if(n = buscar(arbolBusquedaBinaria, n, 1))
                printf("\nEl numero que buscas esta en la posicion: %i\n\n", n);
            else
                printf("\nEl numero no esta y deberia estar en la posicion %i", arbolBusquedaBinaria[0]);
        }
        else if(n == 2){
            printf("\nDame el numero a insertar: ");
            scanf("%i", &i);
            if(n = buscar(arbolBusquedaBinaria, i, 1))
                printf("\nEl numero ya se encuentra en la posicion %i: ", n);
            else
                arbolBusquedaBinaria[arbolBusquedaBinaria[0]] = i;
        }
            else bandera = 0;
      
    }
    getchar();
    return 0;
}


Título: Re: Ayuda con un arbol binario
Publicado por: .xAk. en 20 Noviembre 2021, 03:34 am
conio.h?

si tienes la función de buscar, empieza por ahí ... o a ver, cómo emiezas la función. Por mi parte necesito ver lo que te falla o esto no es tuyo.