Escolar Documentos
Profissional Documentos
Cultura Documentos
#include <stdlib.h>
#include <time.h>
using namespace std;
class Arbol{
private:
class Nodo{
public:
Nodo* izquierdo;
float dato;
Nodo* derecho;
Nodo(void){
izquierdo = NULL;
dato = 0;
derecho = NULL;
//cout<<"Nodo construido..."<<endl;
};
Nodo(Nodo* izq, float d, Nodo* der){
izquierdo = izq;
dato = d;
derecho = der;
//cout<<"Nodo construido..."<<endl;
};
~Nodo(void){
//cout<<"Nodo destruido..."<<endl;
};
};
Nodo* raiz;
void inserta(Nodo* aqui, float d){
if(d <= aqui->dato && aqui->izquierdo==NULL)
aqui->izquierdo = new Nodo(NULL,d,NULL);
public:
Arbol(void){
raiz = NULL;
};
~Arbol(void){
liberaArbol();
};
bool estaVacio(void){
return raiz == NULL;
};
void inserta(float d){
if(estaVacio())
raiz = new Nodo(NULL,d,NULL);
else
inserta(raiz,d);
};
void liberaArbol(void){
liberaArbol(raiz);
raiz = NULL;
};
bool eliminaSubarbol(float d){
if(estaVacio())
return false;
else if(d==raiz->dato){
liberaArbol();
return true;
}
else
return eliminaSubarbol(raiz,d);
};
void muestraPreOrdem(void){
muestraPreOrdem(raiz);
};
void muestraPostOrdem(void){
muestraPostOrdem(raiz);
};
void muestraInOrdem(void){
muestraInOrdem(raiz);
};
void muestraInOrdemR(void){
muestraInOrdemR(raiz);
};
bool busca(float d){
return busca(raiz,d);
};
int cuentaNodos(void){
return cuentaNodos(raiz);
};
float sumaNodos(void){
return sumaNodos(raiz);
};
float buscaMenor(void){
if(estaVacio())
return -1;
else
return buscaMenor(raiz);
};
float buscaMayor(void){
if(estaVacio())
return -1;
else
return buscaMayor(raiz);
};
void muestraEnAnchura(void){
//Tarea
};
void muestraEnProfundidad(void){
//Tarea
};
int alturaDeArbol(void){
if (estaVacio())
return 0;
else
return alturaDeArbol(raiz)-1;
};
};
int main(void){
Arbol A;
float d;
A.inserta(50);
A.inserta(30);
A.inserta(70);
A.inserta(20);
A.inserta(40);
A.inserta(60);
A.inserta(80);
A.inserta(25);
A.inserta(35);
A.inserta(55);
A.inserta(90);
cout<<endl<<endl
<<"Muestra preordem:"<<endl;
A.muestraPreOrdem();
cout<<endl<<endl;
cout<<endl<<endl
<<"Muestra posordem:"<<endl;
A.muestraPostOrdem();
cout<<endl<<endl;
cout<<endl<<endl
<<"Muestra inordem:"<<endl;
A.muestraInOrdem();
cout<<endl<<endl;
cout<<endl<<endl
<<"En anchura:"
<<endl<<endl;
A.muestraEnAnchura();
cout<<endl<<endl;
cout<<endl<<endl
<<"En profundidad:"
<<endl<<endl;
A.muestraEnProfundidad();
cout<<endl<<endl;
cout<<endl<<endl
<<"Altura del arbol: "
<<A.alturaDeArbol()
<<endl<<endl;
cout<<endl<<endl
<<"Hay "<<A.cuentaNodos()<<" nodos."
<<endl<<endl;
cout<<endl<<endl
<<"Los nodos suman: "<<A.sumaNodos()
<<endl<<endl;
cout<<endl<<endl
<<"el menor es: "<<A.buscaMenor()
<<endl<<endl;
cout<<endl<<endl
<<"el mayor es: "<<A.buscaMayor()
<<endl<<endl;
system("pause");
system("cls");
cout<<endl<<endl
<<"Muestra inordem:"<<endl;
A.muestraInOrdem();
cout<<endl<<endl;
cout<<endl<<endl
<<"Que dato (subarbol) deseas eliminar? ";
cin>>d;
if(A.eliminaSubarbol(d))
cout<<endl<<endl<<" FUE eliminado."<<endl;
else
cout<<endl<<endl<<" NO fue eliminado."<<endl;
cout<<endl<<endl;
cout<<endl<<endl
<<"Muestra inordem:"<<endl;
A.muestraInOrdem();
cout<<endl<<endl;
system("pause");
system("cls");
cout<<endl<<endl
<<"Fin del main:"
<<endl<<endl;
return 0;
}