hojas de un árbol (ABB)

  Arbol binario (ABB)

Mediante programación en C++, hacer un programa que permita mostrar las hojas del árbol, así como imprimir los elementos ingresados por teclado. El programa debe tener un menú de 4 opciones: Ingresar elementos, mostrar hojas que tiene el árbol (ABB), visualizar elementos del árbol (ABB) y salir de la aplicación.

#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 postorden(ABB);

void verarbol(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<<"2.mostrar hojas"<<endl;
     cout<<"3.visualizar arbol"<<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 2:{
    if(arbol!=NULL)
     {
      cout<<endl<<"las hojas son : ";
      postorden(arbol);
     }
   else
   {
    cout<<"el arbol no tiene elementos";
   }
   getch();
   break;
   }//fin case3

   case 3:{
    cout<<"  visualizacion del arbol "<<endl<<endl;
    if(arbol!=NULL)
      {
       verarbol(arbol,0);
      }
    else
      {
       cout<<"el arbol no tiene elementos";
      }
    getch();
    break;
   }//fin case5




  }//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 postorden(ABB arbol)
{
 if(arbol!=NULL)
   {
    postorden(arbol->izq);
    postorden(arbol->der);
    if(arbol->der==NULL && arbol->izq==NULL)
    {cout<<arbol->valor<<" ";}
   }
}
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);
}
hojas de un árbol (ABB)
hojas de un árbol (ABB)

Como se puede ver en las imágenes sobre el ejercicio de árbol (ABB), el ejercicio permite realizar lo siguiente:

  •   El programa pide que se ingrese «n» cantidad de números, así cómo el ingreso de cada uno de los números.
  •   La segunda opción del menú muestra las hojas del árbol (ABB).
  •   La tercera opción muestra todos los elementos que se ingresaron al árbol (ABB).
  •   Y finalmente la opción salir, la cual permite salir de la ejecución de la aplicación.

Espero te haya servido de mucha ayuda este ejercicio, si te gustó 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