INFO607
Functions
arbre.c File Reference
#include <stdlib.h>
#include "arbre.h"

Go to the source code of this file.

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)
 

Function Documentation

◆ ArbreVide()

Arbre * ArbreVide ( )
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 
)

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 
)

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)

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)
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)
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 
)

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 
)

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).

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)

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.