Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - freshhprince

#1
Programación C/C++ / Ayuda con un arbol binario
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



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