Buscar en un árbol (ABB)

  Arbol binario (ABB) en C++

Mediante programación en C++, realizar un programa que permita ingresar n cantidad de números, buscar un número cualquiera dentro del árbol y luego mostrar todos los elementos que se ingresaron al árbol.

#include <iostream.h>
#include <conio.h>
struct nodo
    {
     int valor;
     struct nodo* izq;
     struct nodo* der;
    };
typedef struct nodo *ABB;
void inserta(ABB& ,int);

void verarbol(ABB,int);
int buscar(ABB,int);


void main()
{
ABB arbol=NULL;
ABB subarbol=NULL;
int n,x,opc,a;
  do
    {
     cout<<"menu principal"<<endl;
     cout<<"1.ingresar elementos"<<endl;
     cout<<"5.visualizar arbol"<<endl;
     cout<<"6.buscar elementos"<<endl;
     cout<<"0.salir"<<endl;
     cout<<"=========================="<<endl;
     cout<<"ingrese una opcion: ";
     cin>>opc;
   switch(opc)
  {
   case 1:{
    cout<<"ingrese cantidad  de elem. al arbol: ";cin>>n;
    for(int i=0;i<n;i++)
       {
        cout<<"ingrese numero"<<i<<" : ";cin>>x;
        inserta(arbol,x);
       }
    getch();
    break;
   }//fin case1
   case 5:{
    cout<<"  visualizacion del arbol "<<endl<<endl;
    if(arbol!=NULL)
      {
       verarbol(arbol,0);
      }
    else
      {
       cout<<"el arbol no tiene elementos";
      }
    getch();
    break;
   }//fin case5
   case 6:{
   int elem,r;
   if(arbol!=NULL)
     {
      cout<<"ingrese elemento a buscar: ";cin>>elem;
      r=buscar(arbol,elem);
      /*if(r==1)
         cout<<elem<<" encontrado";
      else
        cout<<elem<<" NO encontrado";
     */           cout<<"elemento encontrado"<<endl;
           cout<<"se recorrieron:"<<r<<"elementos";
            }
   else
     {
      cout<<" el arbol no tiene elementos";
     }
   getch();
   break;
   }//fin case6


  }//fin switch
  clrscr();
    }while(opc!= 0);
}//fin main.
/*************************** funciones **************************/void inserta(ABB &arbol,int x)
{
 if(arbol==NULL)
   {
    arbol=new(struct nodo);
    arbol->valor=x;
    arbol->izq=NULL;
    arbol->der=NULL;
   }
 else
  {
   if(x<arbol->valor) inserta(arbol->izq,x);
   else
     if(x>arbol->valor) inserta(arbol->der,x);
  }
}


void verarbol(ABB arbol, int nro)
{
 int i;
 if(arbol==NULL)return;
 verarbol(arbol->der,nro+1);
 for(i=0;i<nro;i++)
    cout<<" ";
    cout<<arbol->valor<<endl;
 verarbol(arbol->izq,nro+1);
}
int buscar(ABB arbol, int bus)
{
 ABB A1;
 A1=arbol;
 int i=0;
 while(A1!=NULL)
      {
       if(bus < A1->valor)
   {A1=A1->izq;
      i=i+1;}
       else
  if(bus > A1->valor)
   { A1= A1->der;
      i=i+1;
      }
   else
   return i;
       }
 return -1;
}
buscar en un árbol (ABB)
buscar en un árbol (ABB)

Como se puede ver en las imágenes, el programa buscar en un árbol (ABB), tiene un menú de 4 opciones:

  •   La primera opción del menú, nos pide ingresar la cantidad de elementos que tendrá el árbol binario (ABB).
  •   La segunda opción del menú, mostrará todos los elementos que se han ingresado al árbol.
  •   La tercera opción del menú, nos pedirá ingresar el número que deseamos buscar y nos mostrará cuántos elementos recorrió para encontrarlo.
  •   Y finalmente la opción salir, la cual nos permite salir de la ejecución del programa.

  Espero te haya sido de mucha ayuda este ejercicio, si te ayudó este post, no dudes en compartirlo!!

Continuando con Arbol binario (ABB), les comparto el siguiente post: Ver menor de menores, podar, talar, elemento de izquierda y derecha