• Aucun résultat trouvé

Parcours infixe: on parcourt le sous-arbre de gauche dans l’ordre infixe, on visite le sommet puis on parcourt le sous-arbre de droite dans l’ordre infixe

N/A
N/A
Protected

Academic year: 2022

Partager "Parcours infixe: on parcourt le sous-arbre de gauche dans l’ordre infixe, on visite le sommet puis on parcourt le sous-arbre de droite dans l’ordre infixe"

Copied!
2
0
0

Texte intégral

(1)

Initiation `a la Programmation 2 (IP2) TP9

universit´e PARIS . DIDEROT

PARIS 7

Pendant tout ce tp, nous allons prendre comme exemple l’arbre suivant.

3 5

9

2 6

8

7

0 1

4

Commen¸cons par d´efinir diff´erentes fa¸cons de parcourir un arbre binaire :

1. Parcours infixe: on parcourt le sous-arbre de gauche dans l’ordre infixe, on visite le sommet puis on parcourt le sous-arbre de droite dans l’ordre infixe.

Pour l’arbre pr´ec´edent ce parcours est : 2 9 6 8 5 3 0 7 4 1.

2. Parcours pr´efixe : on visite le sommet, on parcourt le sous-arbre de gauche dans l’ordre pr´efixe puis on parcourt le sous-arbre de droite dans l’ordre pr´efixe.

Pour l’arbre pr´ec´edent ce parcours est : 3 5 9 2 6 8 7 0 1 4.

3. Parcours postfixe: on parcourt le sous-arbre de gauche dans l’ordre postfixe, on parcourt le sous-arbre de droite dans l’ordre postfixe puis on visite le sommet.

Pour l’arbre pr´ec´edent ce parcours est : 2 8 6 9 5 0 4 1 7 3.

On consid`ere ainsi la classe Noeudsuivante :

1 p u b l i c c l a s s N o e u d {

p r i v a t e int e t i q u e t t e ;

3 p r i v a t e N o e u d g a u c h e ; p r i v a t e N o e u d d r o i t ;

p u b l i c N o e u d (int e t i q u e t t e , N o e u d g , N o e u d d ) {

7 t h i s. e t i q u e t t e = e t i q u e t t e ; t h i s. g a u c h e = g ;

9 t h i s. d r o i t = d ; }

p u b l i c N o e u d (int e t i q u e t t e ) {

13 t h i s( e t i q u e t t e ,null,n u l l);

}

15 }

1. D´efinir une m´ethodepublic void afficheInfixe()dans la classeNoeudqui affiche l’arbre commen¸cant `athis dans l’ordre infixe.

2. Tester dans une classeMain la m´ethodeafficheInfixe() de la classeNoeud sur l’exemple donn´e en introduction grˆace au code suivant :

1

(2)

1 p u b l i c c l a s s M a i n {

3 p u b l i c s t a t i c v o i d m a i n ( S t r i n g [] a r g s ){

5 N o e u d a = new N o e u d (6 ,null,new N o e u d ( 8 ) ) ; N o e u d b = new N o e u d (9 , new N o e u d (2) , a );

7 N o e u d c = new N o e u d (5 , b , n u l l);

N o e u d d = new N o e u d (1 , new N o e u d (4) , n u l l);

9 N o e u d e = new N o e u d (7 , new N o e u d (0) , d );

N o e u d f = new N o e u d (3 , c , e );

f . a f f i c h e I n f i x e ();

13 }

}

3. D´efinir dans la classeNoeuddes m´ethodespublic void affichePrefixe()etpublic void affichePostfixe()qui affichentthis respectivement dans l’ordre pr´efixe et suffixe.

4. D´efinir dans la classe Noeud une m´ethode int nbDeNoeuds() qui retourne le nombre de nœuds dethis.

5. D´efinir dans la classeNoeudune m´ethodeint somme()qui retourne la somme des ´etiquettes dethis.

6. D´efinir dans la classe Noeudune m´ethodeint profondeur()qui retourne la profondeur de this. La profondeur d’un arbre est la longueur de sa plus longue branche ; par exemple la profondeur de l’arbre-exemple est 4 : sa plus longue branche est 3 – 5 – 9 – 6 – 8.

7. D´efinir dans la classeNoeud une m´ethode boolean recherche(int e) qui renvoietrue si un nœud de l’arbre est ´etiquet´e pare.

8. D´efinir un constructeurNoeud(Noeud arbre)qui cr´ee une copiede l’arbre donn´e en argu- ment.

9. (facultatif) D´efinir un nouveau constructeur Noeud(int[] tab) qui prend en entr´ee un tableau non vide de taillen.

— Soitrla moiti´e de n(arrondi `a l’inf´erieur : r = n/2).

— La racine dethis a pour ´etiquette tab[r].

— SoittabG = [tab[0], ...,tab[r1]]. Le sous-arbre de gauche est new Noeud(tabG)et

— soittabD = [tab[r+1], ...,tab[l1]]alors le sous-arbre de droite estnew Noeud(tabD).

Par exemplenew Noeud([0,1,2,3,4,5])est : 3 1

0 2

5 4

10. (facultatif) Tester le constructeur sur l’arbre pr´ec´edent via le code : int[] tab = {0 ,1 ,2 ,3 ,4 ,5};

N o e u d g = new N o e u d ( tab );

g . a f f i c h e I n f i x e ();

6 g . a f f i c h e P r e f i x e ();

Ce dernier doit afficher 0 1 2 3 4 5 et 3 1 0 2 5 4 .

2

Références

Documents relatifs

prédécesseur dans le parcours infixe est le nœud le plus à droite dans son sous-arbre gauche. Ce nœud n’est pas nécessairement une feuille, mais il n’a pas de

Si l’on s’efforce de classer schémati- quement les différents courants minimalistes par degré d’intervention décroissante du juge, on considérera que (i) le juge peut remettre en

Note : Un parcours infixe d'un arbre binaire de recherche permet de traiter les clés de la plus petite à la plus grande pour un parcours infixe main gauche, ou de

Note : Un parcours infixe d'un arbre binaire de recherche permet de traiter les clés de la plus petite à la plus grande pour un parcours infixe main gauche, ou de la plus grande à

Note : Un parcours infixe d'un arbre binaire de recherche permet de traiter les clés de la plus petite à la plus grande pour un parcours infixe main gauche, ou de

(2) Montrer que si un nœud a deux fils, son successeur dans l'ordre infixe n'a pas de fils gauche et son prédécesseur n'a pas de fils droit.. (3) Montrer que le successeur du

C’est pour cette raison que la société YAHOO Inc, avait été assignée en référé au mois de mai 2000 par l’Union des étudiants juifs de France (UEJF) et la Ligue

Il réquisitionnait toute l’armée française installée au Cameroun, la garde camerounaise et les supplétifs dans les opérations de maintien ou de rétablissement de l’ordre