#include<iostream.h>
#include<stdio.h>
struct nodo{
int x;
nodo* sx;
nodo* dx;
};
class tree{
void deltree(nodo* &p);
void print(nodo* &p);
void insert(nodo* &p,int x);
void copia(nodo* p,nodo* &punt);
void add(nodo* &p,int x);
void visitaord(nodo* p);
void visitapostord(nodo* p);
void visitapreord(nodo* p);
public:
nodo* testa;
tree();
~tree();
tree(const tree &ob);
void inserisci(int x);
void visual();
void cancella();
void operator=(const tree &ob);
tree operator++();
tree operator+(int x);
void visita(int x);
friend int conta(nodo* p);
friend void contafoglie(tree &ob);
};
tree::tree()
{ testa=NULL;
}
tree::~tree()
{ if(!testa)
delete testa;
deltree(testa);
}
tree::tree(const tree &ob)
{ copia(ob.testa,testa);
}
void tree::copia(nodo* p,nodo* &punt)
{ if(p)
{ punt=new nodo;
punt->x=p->x;
copia(p->sx,punt->sx);
copia(p->dx,punt->dx);
}
else
punt=NULL;
}
void tree::inserisci(int x)
{ insert(testa,x);
}
void tree::insert(nodo* &p,int x)
{ if(!p)
{ p=new nodo;
p->x=x;
p->sx=NULL;
p->dx=NULL;
}
else
if(x<=p->x)
insert(p->sx,x);
else
insert(p->dx,x);
}
void tree::visual()
{ print(testa);
}
void tree::print(nodo* &p)
{ if(!p)
cout<<"\n L'albero e' vuoto";
else
{ print(p->sx);
print(p->dx);
cout<<p->x<<endl;
}
}
void tree::cancella()
{ deltree(testa);
testa=NULL;
}
void tree::deltree(nodo* &p)
{ if(p)
{ deltree(p->sx);
deltree(p->dx);
delete p;
}
}
void tree::operator=(const tree &ob)
{ deltree(testa);
copia(ob.testa,testa);
}
tree tree::operator++()
{ add(testa,1);
return *this;
}
void tree::add(nodo* &p,int x)
{ if(p)
{ p->x=p->x+x;
add(p->sx,x);
add(p->dx,x);
}
}
tree tree::operator+(int x)
{ tree temp;
copia(temp.testa,testa);
temp.inserisci(x);
return temp;
}
void tree::visita(int x)
{ if(x==1) visitaord(testa);
if(x==2) visitapostord(testa);
if(x==3) visitapreord(testa);
}
void tree::visitaord(nodo* p)
{ if(p)
{ visitaord(p->sx);
cout<<"\n l'elemento e': "<<p->x<<endl;
visitaord(p->dx);
}
}
void tree::visitapostord(nodo* p)
{ if(p)
{ visitapostord(p->sx);
}
Albero.
Semplice programmino in C++ che tratta gli alberi, in questo programma si può lavorare su un albero creandolo, modificandolo, stampando a video e tante altre funzioni.