Structures de Donne es
arborescentes :
Les Arbres
PART II
1
Primitives des arbres
binaires
/*****************************************************************
* Fichier : ARBPRIM.H
* Contenu : De claration des primitives du TDA ARBIN
******************************************************************/
#ifndef _ARBPRIM_H
#define _ARBPRIM_H
#include <stdio.h>
#include <stdlib.h>
#include "ARBSDD.H"
/*permet de cre er un arbre binaire. Elle renvoie NULLen cas d'insuffisance de me moire*/
ARBIN arbinCreer(void);
int arbinVide(ARBIN);
int arbinTaille(ARBIN);
int arbinHauteur(ARBIN);
/* permet dî
affiche le contenu de lî
arbre en profondeur: 1=pre fixe , 2=infixe , 3=postfixe */
void arbinAfficher(ARBIN, int);
ARBIN arbinCopier(ARBIN);
fg info fd
refRacine
20
5 -3
14
3
Repre sentation
cha–
ne e des AB
FG Info FD
/*************************************************************
* Fichier : ARBIN.H
* Contenu : De claration de la strucure de donne e choisie du TDA ARBIN.
************************************************************/
#ifndef _ARBIN_H
#define _ARBIN_H
#include "ELTPRIM.H"
4
Cre er
/*********************************************************
* Fichier : ARBIN.C
* Contenu : De finition des primitives pour une re alisation chaùne e du
TDA ARBIN.
*********************************************************/
ARBIN arbinCreer() {
ARBIN r;
r = (ARBIN) malloc(sizeof(laStruct));
if(!r) { /* pas d'espace me moire */
printf("Erreur de cre ation d'un arbre binaire: pas assez de
me moire.\n");
} else { /* initialisation de racine d'arbre */
r->refRacine = NULL;
}
return r;
}
5
Construire (1)
3 1
7 8
Construire (2)
int construire(ARBIN a, ELEMENT e, ARBIN g, ARBIN d) {
NOEUD n;
if(g == d) && (g!=NULL) {
printf("Erreur de construction: SAG et SAD identiques.\n");
return 0;
}
n = noeudCreer(e, g->refRacine, d->refRacine);
if(n) { a->refRacine = n;
return 1;
}
else
return 0;
}
3 1
7 8
/*******************************************************
* Fichier : main.c
* Contenu : Test du TDA ARBIN
*******************************************************/
#include <stdio.h>
#include "ELTPRIM.H"
#include "ARBPRIM.H"
int main()
{
ELEMENT elt;
ARBIN a1 = arbinCreer();
ARBIN a2 = arbinCreer();
ARBIN a3 = arbinCreer();
ARBIN a4 = arbinCreer();
ARBIN a5 = arbinCreer();
8
Construire (4)
elt = elementCreer();
elementLire(&elt) ; On introduit 3
construire(a3, elt, a1,a2);
9
De truire (1)
3 1
7 8
10
De truire (2)
void arbinDetruire(ARBIN a) {
noeudDetruire(a->refRacine);
}
int arbinVide(ARBIN a) {
ELEMENT racine(ARBIN a) {
}
12
Taille
int arbinTaille(ARBIN a) {
int noeudTaille(NOEUD n) {
int arbinHauteur(ARBIN a) {
}
n Remarque: la fonction arbinHauteur a un arbre en paramà tre et
elle appelle la fonction re cursive noeudHauteur qui a un nç ud en
paramà tre (mˆ me explication que pour arbinTaille)
14
Copier
ARBIN arbinCopier(ARBIN a) {
NOEUD noeudCopier(NOEUD n) {
}
n Remarque: la fonction arbinCopier a un arbre en paramà tre et elle
appelle la fonction re cursive noeudCopier qui a un nç ud en
paramà tre (mˆ me explication que pour arbinTaille)
15
SAGauche - SADroit
ARBIN SAGauche(ARBIN a) {
ARBIN SADroit(ARBIN a) {
16
Affichage (1)
17
Affichage (2)
}
18
Comparaison
}
19