Académique Documents
Professionnel Documents
Culture Documents
Algorithmes de tri
On balaye la liste en échangeant deux éléments consécutifs s’ils sont dans le mauvais
ordre. Le plus grand élément de la liste est donc repoussé à la fin.
On recommence à partir du début, avec les n - 1 premiers éléments et ainsi de suite.
01
www.etudpdf.com
Procédure T riP arBulles( T : tableau[1..n] de entier);
Var i,j,temp : entier ;
Début
Pour i de 1 à n 1 faire
Pour j de 1 à n i faire
Si (T [j] > T [j + 1]) Alors
temp T [j] ;
T [j] T [j + 1] ;
T [j + 1] temp ;
Fin Si;
Fin Pour;
Fin Pour;
Fin;
L’exemple suivant montre une trace de cet algorithme pour trier un tableau de quatre
éléments :
On suppose que les i-1 premiers éléments de la liste sont déjà classés. On insère à sa
place le ieme élément parmi les i-1 premiers ; de la sorte, les i premiers éléments sont triés.
On itère jusqu’à insérer le neme .
02
www.etudpdf.com
Procédure T riInsertion( T : tableau[1..n] de entier);
Var i,j,temp : entier ;
Début
Pour i de 2 à n faire
k i-1 ;
temp T [i] ;
Tant que (k 1 et temp < T [k] ) faire
T [k + 1] T [k] ;
k k 1;
Fin TQ;
T [k + 1] temp ;
Fin Pour;
Fin;
Le tri par sélection consiste simplement à sélectionner l’élément le plus petit du tableau
à trier, à le mettre au début, et à répéter itérativement le processus tant qu ?il reste des
éléments dans le tableau.
03
www.etudpdf.com
Procédure T riP arSelection( T : tableau[1..n] de entier);
Var i,j,IndMin,temp : entier ;
Début
Pour i de 1 à n 1 faire
IndMin i;
Pour j de i+1 à n faire
Si (T [j] < T [IndM in]) Alors
IndMin j;
Fin Si;
Fin Pour;
temp T [i] ;
T [i] T [IndM in] ;
T [IndM in] temp ;
Fin Pour;
Fin;
L’algorithme fait n-1 itérations, à chaque itération i il fait n-i-1 itération d’où sa com-
plexité est O(n2 )
04
www.etudpdf.com
4.2 Tri par fusion
Le tri par fusion (merge sort en anglais) est une illustration du principe "diviser pour
résoudre" : le tableau à trier est tout d ?abord scindé (divisé) en deux suites de longueurs
égales. Ces deux suite sont ensuite triées séparément avant d’être fusionnées (ou interclas-
sées).
Exemple :
Dans cet exemple, le tableau de quatre éléments est scindé en deux tableaux de deux
éléments chacun. Chaque tableau est trié de la même façon que le tableau initial. Après le
tri des deux tableaux, ils sont fusionnés pour donner le tableaux entier trié. La division s’ar-
rête lorsqu’on obtient un tableau d’une seule case qui est naturellement trié. L’algorithme
détaillé est le suivant :
05
www.etudpdf.com
Algorithme TriParFusion;
Var T : tableau[1..n] de entier ;
Procédure F usion( Debut,Fin : entier);
Début
// Vu en TP
Fin;
Début
Pour i de 1 à n faire
Lire(T[i]) ;
Fin Pour;
06
www.etudpdf.com
T(n) = 2T(n/2) + n 1
= 2 [2(T(n/4) + n/2] + n) = 4 T(n/4) + 2n 2
= 4 [2T(n/8) + n/4 ] + 2n = 8T(n/8) + 3n 3
= 8[2T(n/16) + n/8] + 3n 16T(n/16) + 4n 4
:
= 2i T(n/2i ) + in i
:
= n T(1) + log2 (n)n log2 (n)
= n(log2 (n) + 1)
07
www.etudpdf.com
La méthode de tri rapide permet d’éviter l’opération de fusion et ainsi gagner en temps
de calcul.
L’algorithme détaillé est le suivant :
08
www.etudpdf.com
Algorithme TriRapide;
Var T : tableau[1..n] de entier ;
Procédure P artirion( Debut,Fin : entier ; var IPivot : entier);
var Pivot,i,temp : entier ;
Début
Pivot T[Debut] ;
i Debut + 1 ;
Pour j de Debut+1 à Fin faire
Si (T [j] Pivot) Alors
// Permuter T[i] et T[j]
temp T [i] ;
T [i] T [j] ;
T [j] temp ;
i i + 1;
Fin Si;
Fin Pour;
Début
T riRapide(1,n) ;
Fin.
09
www.etudpdf.com
Dans le pire des cas le tableau est déjà trié. Dans ce cas la procédure P artition parcourt
le tableau jusqu’à la fin et retourne un pivot au début du tableau. La procédure T riRapide
est relancée alors sur les derniers n-1 éléments. Le temps de calcul peut être donnée par :
T (n) = n + (n 1) + (n 2) + ....(n n) = 12 n2 2
2n
10
www.etudpdf.com
Chapitre1:Introduction à la complexité algorithmique 2 année licence informatique
Chapitre 1:
Introduction à la complexité algorithmique
I – Introduction
"Si l’on veut résoudre un problème à l’aide d’un ordinateur, il est indispensable
d’avoirrecours à un algorithme car un ordinateur ne peut exécuter que des ordres
précis et sans ambiguïté."
Stockmeyer et Chandra
Ce chapitre a pour but de présenter à l'étudiant des notions pour lui permettre de
comprendre la complexité algorithmique et comment l’utiliser. Cette notion
est importante car si vous voulez résoudre un problème avec un ordinateur,
comme le disent Stockmeyer et Chandra, il vous faut un algorithme. Or pour
pouvoir l’étudier et le comparer avec d’autres,il faut utiliser la notion de complexité .
ASDD3 1
www.etudpdf.com
Chapitre1:Introduction à la complexité algorithmique 2 année licence informatique
II – Complexité
Nous allons commencer par définir la complexité d’un algorithme, puis étudier les données
qui lui sont liées, calculer certaines complexités pour pouvoir enfin obtenir un outil de
comparaison.
II.1 – Définitions
Définition 1
Algorithme
Th. H. Cormen, Ch. E. Leiserson, R. L. Rivest, C. Stein , ont donné cette définition :
"Procédure de calcul bien définie qui prend en entrée une valeur, ou un ensemble
devaleurs, et qui donne en sortie une valeur, ou un ensemble de valeurs. Un algorithme
est donc une séquence d’étapes de calcul qui transforment l’entrée en sortie."
Exemple 1
Pour rechercher un nombre dans un tableau trié, le principe de dichotomie consiste à
couper ce tableau en deux, à chercher dans une partie et si ce n’est dans celle-ci, alors
nous cherchons dans l’autre et ainsi de suite jusqu’à la fin. Nous nous arrêtons quand la
valeur a été trouvée ou bien lorsque nous sommes arrivé à la fin du tableau c.a.d. quand
la valeur recherchée n’est pas dans le tableau.
Algorithme de recherche dichotomique
RECHERCHE_DICHOTOMIQUE
Entrée : un tableau de n nombres A=[ a 1 , a 2 , a3 ,... , a n ] trié par ordre croissant
et une valeur v
Sortie : un indice i tel que v =A[i] , ou bien la valeur spéciale NIL si v ne
figure pas dans A
1 début ← 1
2 fin ← n
3 trouvé ← FALSE
4 répéter
5 milieu ← partie entière(début + (fin – début) / 2)
6 si A [ milieu]=v
7 alors trouvé ← TRUE
8 sinon
9 si v A [ milieu ]
10 alors
11 début ← milieu + 1
12 si A[début ]=v
13 alors
14 milieu ← début
15 trouvé ← TRUE
16 fin si
ASDD3 2
www.etudpdf.com
Chapitre1:Introduction à la complexité algorithmique 2 année licence informatique
17 sinon
18 fin ← milieu – 1
19 si A [ fin]=v
20 alors
21 milieu ← fin
22 trouvé ← TRUE
23 fin si
24 fin si
25 fin si
26 jusqu’à trouvé ou début ≥ fin
ASDD3 3
www.etudpdf.com
Chapitre1:Introduction à la complexité algorithmique 2 année licence informatique
ASDD3 4
www.etudpdf.com
Chapitre1:Introduction à la complexité algorithmique 2 année licence informatique
Exemple 2
Fonction de multiplication de deux matrices
MULTIPLICATIONMATRICES(A,B)
entrée : deux matrices A, B n×n
sortie : matrice C n×n
1 n ← ligne[A]
2 Soit C une matrice n×n
3 pour i ← 1 à n
4 faire pour j ← 1 à n
5 faire c ij ← 0
6 pour k ← 1 à n
7 faire c ij ← c ij aik . b kj
8 fin pour
9 fin pour
10 fin pour
11 retourner C
ASDD3 5
www.etudpdf.com
Chapitre1:Introduction à la complexité algorithmique 2 année licence informatique
Il faut trouver :
la base de la récurrence ;
– et les cas d’arrêt.
T n est calculé grâce à des relations de récurrence.
Exemple 3
Fonction factoriel calculée par récursivité
FACTORIEL (n)
entrée : un entier n
sortie : n !
1 Si n1
2 alors retour ← 1
3 sinon retour ← n ×FACTORIEL( n−1 )
4 fin si
5 retourne retour
ASDD3 6
www.etudpdf.com
Chapitre1:Introduction à la complexité algorithmique 2 année licence informatique
Définition 4
Moy A n= ∑ p d . coût A d avec p d une loi de probabilité sur les entrées.
d ∈ Dn
Il reste à définir p d . Une hypothèse est que toutes les entrées ayant une taille
donnéesont équiprobables.
1
D’où : Moyenne uniforme A n= card D ∑ coût A d
n d∈D n
Définition 5:
Elle est donnée par : Max A n=max {coût A d / d ∈ D n } .
C’est cette complexité qui est généralement calculée car c’est une borne
supérieure du temps d’exécution associé à une entrée quelconque.
Exemple 4
Tri à bulle
TRI-BULLE (A)
entrée : tableau A
sortie : tableau A trié par ordre croissant
1 Pour i ← 1 à longueur[A]
2 faire pour j ← longueur[A] décroissant jusqu’à i+1
3 faire si A[j] < A[j-1]
4 alors permuter A[j] ↔ A[j – 1]
5 fin si
6 fin pour
7 fin pour
ASDD3 7
www.etudpdf.com
Chapitre1:Introduction à la complexité algorithmique 2 année licence informatique
T n=c 1c 2c 3 . n c 4c 5 . n2 c 6c 7. n3
Ainsi T ∈( n3 ) pour les trois complexités.
b) Factoriel
L’algorithme est l’exemple 3 page 5.
Soit T n le temps d’exécution en fonction de l’argument n .
À la base T 1=c 1c 2
Sinon T n=c 1c 3T n1 pour n1
Démontrons que T n=c 1c 2n-1c 1c 3 pour n1
Pour n=1 : vrai.
Nous le supposons vrai au degré n .
Démontrons-le au degré n1 .
T n1=c 1c3 T n
T n1=c 1c3c 1c 2n -1 c1c 3=c1c 2n c 1c 3
Comme la proposition est vraie au degré 1, et si elle est vraie au degré
n , elle est vraie au degré n1 , d’après le principe de récurrence, elle est vraie
quel que soit n .
Donc T n= n
c) Recherche dichotomique
L’algorithme est l’exemple 1 page 1.
Calcul de la complexité dans le meilleur des cas : l’élément A[ milieu]=v .
T n vaut donc :
T n=c 1c 2c3 c 4c5c 6c 7 c25c 26
T n= 1
Calcul de la complexité dans le pire des cas : v ne figure pas dans A .
Supposons que v est plus grand que tous les éléments de A .
T n vaut donc :
T n=c 1c 2c3 x.
c 4c 5c 6c8 c 9c 10c 11c 12c 16c 24c 25c 26
L’algorithme passe x fois dans la boucle répéter jusqu’à ce que début>=fin
Calculons x. Pour cela, nous allons émettre une hypothèse puis la démontrerpar
récurrence.
T n est du type : T n=C 1C 2 x avec C 1 , C 2 des constantes.
Si n=2 ou n=3 , x=1 .
Si n=4 ou n=5 , x=2 .
Si n=8 ou n=9 , x=3.
En fait, C 1 est le temps pour initialiser l’algorithme et C 2 x le temps nécessaireà
l’algorithme pour gérer le tableau de taille n . Posons T ' n le temps pour
effectuer la boucle pour une taille n .
Par la suite, pour simplifier, nous supposons que la taille du problème initial estune
puissance de deux.
ASDD3 8
www.etudpdf.com
Chapitre1:Introduction à la complexité algorithmique 2 année licence informatique
Démontrons que T ' n=C 2 . log 2 n .
Nous le supposons vrai …
au niveau n .
Démontrons-le au niveau 2 n .
T ' 2n =C 2T ' n =C 2C 2 .log 2 n=C 21 log2 n =C 2 log 22 log2 n=C 2 log 2 2n
Comme la proposition est vraie au degré 1, et si elle est vraie au degré n , elle
est vraie au degré 2 n , d’après le principe de récurrence, elle est vraie quel que
soit n puissance de 2.
D’où
T n=C 1T ' n=C 1 C 2 . log 2 n∈ 1 log 2 n
D’où T (n)∈Θ(log 2 ( n))
Remarque
Question ouverte : Quelle est la complexité d’un tri dichotomique ?
Réponse : n log 2 (n)
d) Tri à bulle
L’algorithme est l’exemple 4 page 6.
Calcul de la complexité dans le meilleur des cas : le tableau est déjà trié par
ordre croissant. La quatrième ligne n’est jamais exécutée.
n n
T ( n)=∑ ( c1 + ∑ ( c 2+ c 3 ))
i=1 j=i+ 1
n n n
= ∑ c 1+ ∑ ∑ (c 2+ c 3)
i=1 i=1 j =i + 1
n n n
=c 1 . ∑ 1+ (c 2+ c3 ). ∑ ∑ 1
i=1 i=1 j =i + 1
n
=c 1 . n+ ( c 2+ c 3) . ∑ (n−i)
i=1
n n n
∑ (n−i)=∑ n−∑ i
i=1 i=1 i=1
12
=n − n( n+ 1) *
2
2 1 2 1
=n − n − n
2 2
1 2 1
= n− n
2 2
1 1
T ( n)=c 1 . n+ (c 2+ c 3).( n2 − )
2 2
(c 2+ c 3) 2 2c 1−c 2−c 3
= n+ n
2 2
D’où T n∈ n 2
Calcul de la complexité dans le pire des cas : le tableau est trié par ordre
décroissant
n
* Rappel : la sommation d’une série arithmétique a pour valeur ∑ k = 12 n n1
k=1
ASDD3 9
www.etudpdf.com
Chapitre1:Introduction à la complexité algorithmique 2 année licence informatique
L’algorithme tri à bulle est donc dans tous les cas de complexité n 2 .
Remarque
Quand un algorithme contient une structure de contrôle itératif comme une boucle
tantque ou pour, nous obtenons comme dans l’exemple ci-dessus des sommations
qui nous
ramènent à des séries.
Définition 6
Efficacité d’un algorithme par rapport à un autre
« On considère généralement qu’un algorithme est plus efficace qu’un autre si son temps
d’exécution du cas le plus défavorable a un ordre de grandeur inférieur. » (Th. H. Cormen,
Ch. E. Leiserson, R. L. Rivest, C. Stein 9).
C’est pour ces raisons que la notation O 10 est souvent utilisée pour la mesure de la
complexité car elle décrit une borne supérieure du cas le plus défavorable.
ASDD3 10
www.etudpdf.com
Chapitre1:Introduction à la complexité algorithmique 2 année licence informatique
Complexité Description
Complexité O1 L’exécution ne dépend pas du nombre d’éléments en entrée
mais s’effectue toujours en un nombre constant
Complexité constante ou
d’opérations
temps constant
Complexité O n3 Idem quadratique mais avec ici par exemple trois boucles
Complexité cubique imbriquées.
Complexité O 2n Les algorithmes de ce genre sont dits "naïfs" car ils sont
Complexité exponentielle inefficaces et inutilisables dès que n dépasse 50.
Dénition 7
À l’inverse d’un algorithme naïf (complexité exponentielle) et par convention, un
algorithmeest dit praticable, efficace s’il est polynomial.
ASDD3 11
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
Racine : est le nœud qui n'a pas de prédécesseur (parent) et possède zéro ou plusieurs fils. La
racine constitue la caractéristique d'un arbre.
Feuille : est un nœud qui n'a pas de successeur (fils). Une feuille est aussi appelée un nœud
externe.
Nœud interne : est tout nœud qui admet au moins un successeur (fils)
Fils d’un nœud : sont ses successeurs. Dans l'exemple, F, G, H, et I sont les fils du nœud D.
Frères : sont les successeurs ou les fils issus d'un même nœud (parent direct). Dans
l'exemple, B, C et D sont des frères.
Père : est un nœud qui admet au moins un successeur (fils).
Dans l'exemple, D est le père des nœuds F, G, H et I.
Sous arbre : est une portion de l'arbre. Dans l'exemple, le nœud G avec ces deux fils J et K
constituent un sous arbre.
Une branche : est une suite de nœuds connectés de père en fils (de la racine à une feuille).
A-B-E
A-C
A-D-F
A-D-G-J
…..
1
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
Descendants d’un nœud : sont tous les nœuds du sous arbre de racine nœud. Dans
l'exemple, les descendants de D sont F, G, H, I, J, K et L.
Ascendants d’un nœud : sont tous les nœuds se trouvant sur la branche de la racine vers ce
nœud. Dans l'exemple, les ascendants de J sont G, D et A. Les ascendants de E sont B et A.
Taille d’un arbre: est le nombre de nœuds qu’il possède.
Taille de l’arbre dans l’exemple = 12
Un arbre vide est de taille égale à 0.
Degré d’un nœud : est le nombre de ses fils. Dans l'exemple, le degré de B est 1, le degré
de D est 4.
Degré d’un arbre : est le degré maximum de ses nœuds.
Degré de l’arbre dans l’exemple = 4
Le niveau d'un nœud : est la distance qui le sépare de la racine :
Le niveau de la racine = 0
Le niveau de chaque nœud est égale au niveau de son père plus 1
Le niveau du nœud contenant ‘G' est égal à 2.
La profondeur d'un arbre (ou sa hauteur) : est le plus grand niveau, c-à-d la distance
entre la racine et la feuille la plus lointaine. Dans l'exemple, la profondeur de l'arbre est
égale à 3.
o Définition récursive :
Cas particulier : NIL est un arbre vide, contenant zéro nœud.
Cas général : Si n est un nœud et si T1, T2, ...Tm sont des arbres, ALORS on peut construire un
nouvel arbre en connectant T1, T2, ...Tm comme des fils à n.
- Chaque Ti est définit de la même manière (récursivement). Donc T1, T2, ...Tm sont alors
des sous- arbres de n
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
Un arbre binaire est dit strictement binaire si chaque nœud interne (non feuille) a exactement
2 fils différents de NIL.
Si un arbre strictement binaire a n feuilles Alors :
le nombre total de ses nœuds = 2n-1.
Le nombre de ses nœuds non feuilles (nœuds internes) = n-1.
Le nombre de feuilles : n=6 (C, D,H, M, J, K)
Le nombre total de nœuds : 2n-1=11
Le nombre de nœuds internes : n-1=5 (A, B, F, G, I)
Un arbre binaire complet est un arbre strictement binaire où toutes les feuilles sont au
même niveau.
Dans un arbre binaire complet de profondeur « d » :
le nombre total de nœuds n = 20 + 21 + 22 + ... 2d = 2d+1-1
ainsi, d = log2(n+1) – 1
le nombre de nœuds internes = 2d-1
le nombre de feuilles = 2d
le nombre de nœuds dans le niveau i = 2i
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
3.1.1- Le parcours préordre : de R (s'il n'est pas vide) consiste à visiter le nœud racine (R)
ensuite parcourir récursivement en préordre les sous arbres T1 (sous arbre gauche) puis T2
(sous arbre droit) ce qui donne : [ R , T1 , T2 ou RGD].
La procédure (récursive) qui affiche les valeurs en parcours préordre d’un arbre de racine R
est :
Procédure Préordre( R:ptrN)
Début
SI R ≠ NIL
ecrire( Info(R) )
Préordre( FG(R) )
Préordre( FD(R) )
FSI
fin
3.1.2- Le parcours inordre de R (s'il n'est pas vide) consiste d'abord à parcourir
récursivement en inordre le sous arbre gauche T1, puis visiter le nœud racine (R)
ensuite parcourir récursivement en inordre le sous arbre droit T2 ce qui donne :
[ T1, R , T2 ou GRD ].
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
La procédure (récursive) qui affiche les valeurs en parcours inordre d’un arbre de racine R est :
Procédure Inordre( R:ptrN )
Début
SI R ≠ NIL
Inordre( FG(R) )
ecrire( Info(R) )
Inordre( FD(R) )
FSI
fin
3.1.3- Le parcours postordre de R (s'il n'est pas vide) consiste d'abord à parcourir récursivement
en postordre les sous arbres T1 puis T2 ensuite visiter le nœud racine (R) ce qui donne [
T1 , T2 , R ou GDR]
La procédure (récursive) qui affiche les valeurs en parcours postordre d’un arbre de racine R est :
Procédure Postordre( R: ptrN)
Début
SI R≠NIL
Postordre( FG(R) )
Postordre( FD(R) )
ecrire( Info(R) )
FSI
fin
NB : On peut faire ces trois parcours sans utiliser la récursivité. Il faudra alors un moyen pour
pouvoir remonter dans les branches de l’arbre :
- On pourra par exemple utiliser une structure de pile pour sauvegarder les adresses des
nœuds par lesquels on est descendu et les dépiler quand on en aura besoin pour remonter.
- On peut aussi enrichir la structure des nœuds en incluant un pointeur vers le nœud père
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
Dans le parcours par niveau, tous les nœuds d’un même niveau sont traités avant de
descendre au niveau suivant.
Procédure parcours_largeur( R:ptrN )
Var F:filed’attente; P: ptrN;
Debut
P←R;
Si R ≠ NIL Alors
Enfiler(F,P);
TQ (Non FileVide(F))
Defiler(F,P);
écrire(info(P));
Si FG(P) ≠ NIL Alors Enfiler(F,FG(P));
Si FD(P) ≠ NIL Alors Enfiler(F,FD(P));
FTQ
Fin
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
2- Opération De Recherche :
La recherche est dichotomique, à chaque étape, un sous arbre est éliminé :
- Rechercher (55)
- Rechercher (FD(20))
- Rechercher (FG(59))
- Rechercher (FD(27))
- Rechercher (FD (33))
- Élément trouvé
4- Opération D’insertion
L'insertion d'un élément se fait toujours au niveau d'une feuille. Cette insertion dans un ABR doit
maintenir la propriété d’ordre des arbres de recherche. Ainsi:
1. Rechercher la position d’insertion
8
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
5- Opération De Suppression
Pour supprimer le nœud « i » d’un ARB, il faudra le rechercher. Une fois le nœud « i » trouvé, on se
trouve dans une des situations suivantes :
Cas 1: Suppression d'une feuille : Il suffit de l'enlever de l'arbre vu qu'elle n'a pas de fils.
Exemple: supprimer le nœud i qui contient la valeur 8 :
1. Rechercher(8)
2. Libérer le nœud « i »
Cas 2: Suppression d'un nœud avec un fils : Il faut l'enlever de l'arbre en le remplaçant par son
fils.
Exemple: supprimer le nœud « i » qui
contient la valeur 10 :
1. Rechercher(10)
2. Chainer le père de i avec le FD(i)
« Chainer le père de i avec le FG(i) »
3. Libérer le nœud « i »
10
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
Cas A: On échange le nœud à supprimer avec son successeur le plus proche (le nœud le plus à
gauche ou le plus petit du sous-arbre droit).
- Racine: 71
- La plus petite valeur : 69
11
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
12
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
Procédure Rechercher ABR (R: ptrN, x: entier, Var Q: ptrN, Var Père: ptrN) :
Cette procédure retourne l’adresse du nœud contenant x (soit Q) ainsi que l’adresse
de son père (soit Père).
Procedure RechercherABR (R: ptrN, x:entier, Var Q: ptrN, Var Père: ptrN)
Debut
Père Nil; Q Nil;
TQ R ≠Nil faire
Si Info (R) = x alors
QR
Sinon
PèreR
Si Info(R)>x alors
RFG(R)
Sinon
RFD(R)
FTQ
Fin
13
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
14
www.etudpdf.com
Algorithmique et structure de données 3 Univ Batna-2- Chapitre4 : Arbres binaires
15
www.etudpdf.com