INFO607
Classes | Typedefs | Functions
arbre.h File Reference

Go to the source code of this file.

Classes

struct  SNoeud
 

Typedefs

typedef int Donnee
 
typedef struct SNoeud Noeud
 
typedef Noeud Arbre
 

Functions

void CopierDonnees (Donnee *d1, Donnee *d2)
 
ArbreArbreVide ()
 
void Detruire (Arbre *A)
 
ArbreCreer0 (Donnee *ptr_d)
 
ArbreCreer2 (Donnee *ptr_d, Arbre *G, Arbre *D)
 
NoeudRacine (Arbre *A)
 
NoeudGauche (Noeud *N)
 
void ModifieGauche (Noeud *N, Arbre *SG)
 
NoeudDroit (Noeud *N)
 
void ModifieDroit (Noeud *N, Arbre *SD)
 
DonneeValeur (Noeud *N)
 

Typedef Documentation

◆ Arbre

typedef Noeud Arbre

Un arbre binaire est un noeud appelé racine. On utilisera le type Arbre lorsqu'on désignera le noeud racine et le type Noeud lorsqu'on désigne un noeud quelconque.

Definition at line 42 of file arbre.h.

◆ Donnee

typedef int Donnee

Definition at line 5 of file arbre.h.

◆ Noeud

typedef struct SNoeud Noeud

Un noeud dans un arbre binaire contient une donnée, et éventuellement un pointeur vers un fils gauche et/ou vers un fils droit. On pourrait aussi stocker le noeud père ici, mais on ne s'en servira pas dans les algorithmes développés.

Function Documentation

◆ ArbreVide()

Arbre * ArbreVide ( )
extern
Returns
l'arbre vide.

Definition at line 24 of file arbre.c.

25{
26 return NULL;
27}

Referenced by Creer0(), and Detruire().

◆ CopierDonnees()

void CopierDonnees ( Donnee d1,
Donnee d2 
)
extern

Copie une donnée dans une autre. Cette fonction est utile lorsque le type Donnee est complexe et que l'opérateur d'affectation du C ne fonctionne pas bien.

Parameters
d1un pointeur vers la première donnée à recopier.
d2un pointeur vers la deuxième donnée, qui sera écrasée et prendra les valeurs de d1.

Copie une donnée dans une autre. Cette fonction est utile lorsque le type ValType est complexe et que l'opérateur d'affectation du C ne fonctionne pas bien.

Parameters
d1un pointeur vers la première donnée à recopier.
d2un pointeur vers la deuxième donnée, qui sera écrasée et prendra les valeurs de d1.

Definition at line 15 of file arbre.c.

16{
17 *d2 = *d1;
18}

Referenced by Creer2().

◆ Creer0()

Arbre * Creer0 ( Donnee ptr_d)
extern

Crée et retourne un arbre avec un seul noeud qui recopie la donnée pointée par ptr_d.

Parameters
ptr_dun pointeur vers une donnée.
Returns
un pointeur vers l'arbre créé (ie. un pointeur vers sa racine).

Definition at line 53 of file arbre.c.

54{
55 return Creer2( ptr_d, ArbreVide(), ArbreVide() );
56}
Arbre * ArbreVide()
Definition arbre.c:24
Arbre * Creer2(Donnee *ptr_d, Arbre *G, Arbre *D)
Definition arbre.c:74

References ArbreVide(), and Creer2().

◆ Creer2()

Arbre * Creer2 ( Donnee ptr_d,
Arbre G,
Arbre D 
)
extern

Crée et retourne un arbre qui l'union de deux sous-arbres plus un noeud qui recopie la donnée pointée par ptr_d.

Parameters
ptr_dun pointeur vers une donnée.
Gun pointeur vers le futur sous-arbre gauche. Attention il ne faut plus s'en servir après, car il est intégré à l'arbre A.
Dun pointeur vers le futur sous-arbre droit. Attention il ne faut plus s'en servir après, car il est intégré à l'arbre A.
Returns
un pointeur vers l'arbre créé (ie. un pointeur vers sa racine).

Definition at line 74 of file arbre.c.

75{
76 Noeud* racine = (Noeud*) malloc( sizeof(Noeud) );
77 CopierDonnees( ptr_d, &racine->data );
78 racine->gauche = G;
79 racine->droit = D;
80 return racine;
81}
void CopierDonnees(Donnee *d1, Donnee *d2)
Definition arbre.c:15
Definition arbre.h:30
struct SNoeud * gauche
Definition arbre.h:32
Donnee data
Definition arbre.h:31
struct SNoeud * droit
Definition arbre.h:33

References CopierDonnees(), SNoeud::data, SNoeud::droit, and SNoeud::gauche.

Referenced by Creer0().

◆ Detruire()

void Detruire ( Arbre A)
extern

Détruit un arbre et désalloue tous ses éléments alloués.

Parameters
Aun pointeur vers un arbre valide.

Definition at line 34 of file arbre.c.

35{
36 if ( A != ArbreVide() )
37 {
38 Detruire( A->gauche );
39 Detruire( A->droit );
40 free( A );
41 }
42}
void Detruire(Arbre *A)
Definition arbre.c:34

References ArbreVide(), Detruire(), SNoeud::droit, and SNoeud::gauche.

Referenced by Detruire(), ModifieDroit(), and ModifieGauche().

◆ Droit()

Noeud * Droit ( Noeud N)
extern
Returns
le noeud fils droit de N (éventuellement NULL si N n'avait pas de fils droit).
Parameters
Nun pointeur vers un noeud valide.

Definition at line 128 of file arbre.c.

129{
130 return N->droit;
131}

References SNoeud::droit.

◆ Gauche()

Noeud * Gauche ( Noeud N)
extern
Returns
le noeud fils gauche de N (éventuellement NULL si N n'avait pas de fils gauche).
Parameters
Nun pointeur vers un noeud valide.

Definition at line 104 of file arbre.c.

105{
106 return N->gauche;
107}

References SNoeud::gauche.

◆ ModifieDroit()

void ModifieDroit ( Noeud N,
Arbre SD 
)
extern

Modifie le noeud N de façon à ce que SD devienne sous nouveau sous-arbre droit. L'ancien sous-arbre droit de N est désalloué.

Parameters
Nun pointeur vers un noeud valide.
SDle nouveau sous-arbre, éventuellement vide ou réduit à un noeud.

Definition at line 140 of file arbre.c.

141{
142 Detruire( N->droit );
143 N->droit = SD;
144}

References Detruire(), and SNoeud::droit.

◆ ModifieGauche()

void ModifieGauche ( Noeud N,
Arbre SG 
)
extern

Modifie le noeud N de façon à ce que SG devienne sous nouveau sous-arbre gauche. L'ancien sous-arbre gauche de N est désalloué.

Parameters
Nun pointeur vers un noeud valide.
SGle nouveau sous-arbre, éventuellement vide ou réduit à un noeud.

Definition at line 116 of file arbre.c.

117{
118 Detruire( N->gauche );
119 N->gauche = SG;
120}

References Detruire(), and SNoeud::gauche.

◆ Racine()

Noeud * Racine ( Arbre A)
extern

Retourne le noeud racine de A (éventuellement NULL si arbre vide).

Parameters
Aun pointeur vers un arbre valide.

Retourne le noeud racine de A (éventuellement NULL si arbre vide).

NB: Vu les définitions, retourne A directement, car l'arbre est confondu avec son noeud racine.

Parameters
Aun pointeur vers un arbre valide.

Definition at line 92 of file arbre.c.

93{
94 return A;
95}

◆ Valeur()

Donnee * Valeur ( Noeud N)
extern

Permet la lecture et l'écriture dans la donnée associée au noeud N.

Returns
un pointeur vers la donnee du noeud N.
Parameters
Nun pointeur vers un noeud valide.

Definition at line 153 of file arbre.c.

154{
155 return & N->data;
156}

References SNoeud::data.