Este es el código del ABB de las clases practicas del martes 13 de mayo por la tarde. Para copiarlo, haced clic donde pone 'Plain Text' y asi os quitará los números de linea.
C++:
-
#include <iostream>
-
#include <ABB.h>
-
-
using namespace std;
-
-
// El programa lee de la entrada est�ndar dos conjuntos de enteros (n�mero de
-
// elementos m�s los elementos a continuaci�n). Los inserta en dos �rboles
-
// Binarios de B�squeda. Los lista y finalmente los une para obtener el
-
// resultado de la uni�n de ambos conjuntos
-
-
void listar_abb (const ABB<int>& a){
-
ABB<int>::Iterador it;
-
-
cout <<"Arbol con " <<a.size() <<" elementos:" <<endl;
-
for (it=a.primero(); it!=a.final(); it=a.siguiente(it))
-
cout <<a.etiqueta(it) <<' ';
-
cout <<endl;
-
}
-
-
int main (int argc, char *argv[]){
-
ABB<int> a,b,c;
-
ABB<int>::Iterador it;
-
int nelem, valor;
-
-
cout <<"Numero de elementos del primer arbol: " <<endl;
-
cin>> nelem;
-
while (nelem!=0) {
-
cin>> valor;
-
a.insertar(valor);
-
nelem--;
-
}
-
-
cout <<"Numero de elementos del segundo arbol: " <<endl;
-
cin>> nelem;
-
while (nelem!=0) {
-
cin>> valor;
-
b.insertar(valor);
-
nelem--;
-
}
-
-
cout <<"Numero de elementos del tercer arbol: " <<endl;
-
cin>> nelem;
-
while (nelem!=0) {
-
cin>> valor;
-
c.insertar(valor);
-
nelem--;
-
}
-
-
cout <<"PRIMER ARBOL: "<<endl;
-
listar_abb(a);
-
cout <<"SEGUNDO ARBOL: "<<endl;
-
listar_abb(b);
-
cout <<"TERCER ARBOL: "<<endl;
-
listar_abb(c);
-
-
/*for (it=b.primero(); it!=b.final(); it=b.siguiente(it))
-
a.insertar(b.etiqueta(it));
-
-
cout <<"UNION: " <<endl;
-
listar_abb(a);*/
-
ABB<int> d;
-
-
for (it=a.primero(); it!=a.final(); it=a.siguiente(it)){
-
if (b.buscar(a.etiqueta(it)) == a.final()){
-
d.insertar(a.etiqueta(it));
-
}
-
}
-
-
for (it=b.primero(); it!=b.final(); it=b.siguiente(it)){
-
if (c.buscar(b.etiqueta(it)) != b.final() && a.buscar(b.etiqueta(it)) == b.final()){
-
d.insertar(b.etiqueta(it));
-
}
-
}
-
-
cout <<"SOLO ELEMENTOS DE a: "<<endl;
-
listar_abb(d);
-
-
return 0;
-
}