martes, 16 de julio de 2013

Arbol Binario en C++

Hola amigos esta vez les mostrare un arbol binario con los recorrios in-orden, post-orden y pre-orden.

Captura:



Codigo:

Arbol.cpp


#include<iostream>
#include"arbol.h"
using namespace std;

void arbol::insertar(tarbol &aux,int v){
 if(aux==NULL){
  aux=new nodo(v);
 }
 else{
  if(v<aux->dato){
   insertar(aux->izquierda,v);
  }
  else{
   if(v>aux->dato){
    insertar(aux->derecha,v);
   }
  }
 }
}

void arbol::ind(tarbol aux){
 if(aux!=NULL){
  ind(aux->izquierda);
  cout<<" num :  "<<aux->dato<<endl;
  ind(aux->derecha);
 } 
 
}

void arbol::nid(tarbol aux){
 if(aux!=NULL){
  cout<<" num :  "<<aux->dato<<endl;
  nid(aux->izquierda);
  nid(aux->derecha);
 }

}
void arbol::idn(tarbol aux){
 if(aux!=NULL){
  idn(aux->izquierda);
  idn(aux->derecha);
  cout<<" num :  "<<aux->dato<<endl;
 }
}

int main(){
 arbol a;
 cout<<"Datos: 5,4,2,6,7"<<endl<<endl;
 a.insertar(a.miarbol,5);
 a.insertar(a.miarbol,4);
 a.insertar(a.miarbol,2);
 a.insertar(a.miarbol,6);
 a.insertar(a.miarbol,7);
 cout<<"Inorden"<<endl<<endl;
 a.ind(a.miarbol);
 cout<<endl<<endl;
 cout<<"Postorden"<<endl;
 a.idn(a.miarbol);
 cout<<endl<<endl;
 cout<<"Preorden"<<endl;
 a.nid(a.miarbol);
 cout<<endl<<endl;fflush(stdin);
 system("pause");
 return 0;
}

Arbol.h


class nodo{
public: 
 int dato;
  nodo *izquierda;
  nodo *derecha;
  nodo(int v,nodo *iz=NULL,nodo *de=NULL){
   dato=v;
   izquierda=iz;
   derecha=de;
  }
class arbol;
};
typedef nodo *tarbol;

class arbol{
public:
 tarbol miarbol;
 arbol(){
  miarbol=NULL;
 }
 void arbol::insertar(tarbol &aux, int v);
 void ind(tarbol aux);
 void nid(tarbol aux);
 void idn(tarbol aux);
};



Descarga el codigo desde aqui.

2 comentarios :

  1. Hola, disculpa la pregunta en que compilador lo hiciste
    ? como meto los dos archivos? es que medio ando aprendiendo. Gracias.

    ResponderEliminar
  2. amigo puedes utilizar cualquiera yo utilice codeblocks para este codigo, y lo siento por contestar hasta ahora pero he estado alejado del blog por estar atendiendo mis estudios

    ResponderEliminar