Ayuda con un arbol binario

Iniciado por freshhprince, 1 Noviembre 2021, 04:03 AM

0 Miembros y 1 Visitante están viendo este tema.

freshhprince

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



#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;
}

.xAk.

#1
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.