1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| #ifndef NoeudH
#define NoeudH
#include <ctime>
#include <vector>
#include <cmath>
#include <cstdlib>
#include <string>
#include <iostream>
class noeud
{
public :
noeud(): valeurs ( NULL ), fils_haut ( NULL ),
fils_bas ( NULL ), pere_haut ( NULL ), pere_bas ( NULL ){};
noeud ( const noeud &n) : pere_haut (n. pere_haut ), pere_bas (n. pere_bas ),
valeurs (n. valeurs ), fils_haut (n. fils_haut ),
fils_bas (n. fils_bas){};
~noeud () { delete [] valeurs ;};
noeud * cree_fils () {
noeud * nouveau =new noeud ;
if ( fils_haut == NULL ) {
nouveau -> pere_bas = this ;
nouveau -> pere_haut = frere_haut ();
if ( frere_haut ()!= NULL )
nouveau -> pere_haut -> fils_bas = nouveau ;
fils_haut = nouveau ;
}
else {
nouveau -> pere_haut = this ;
nouveau -> pere_bas = frere_bas ();
if ( frere_bas ()!= NULL )
nouveau -> pere_bas -> fils_haut = nouveau ;
fils_bas = nouveau ;
}
return nouveau ;
};
noeud * frere_haut ()
{ return ( pere_haut == NULL ) ? NULL : pere_haut -> fils_haut ;};
noeud * frere_bas ()
{ return ( pere_bas == NULL ) ? NULL : pere_bas -> fils_bas ;};
void set_valeurs ( double T[], int n) {
if ( valeurs != NULL ) delete [] valeurs ;
valeurs = new double [n];
for ( int i=0; i<n;i++) valeurs [i]=T[i];
}
double & operator []( int i) { return valeurs [i];}
noeud creer_arbre(int n);
void cree_generation (noeud n_node);
private :
noeud * pere_haut ;
noeud * pere_bas ;
noeud * fils_haut ;
noeud * fils_bas ;
double * valeurs ;
};
#endif |
Partager