Post

CM4 ABR

Télécharger le CM4 ABR en pdf

Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155

Page 1 : INFORMATIQUE 3I V . A R B R E S B I N A I R E S D E R E C H E R C H EEva ANSERMIN & Renaud VERIN & Romuald GRIGNONv1.00

page 1

Page 2 : Rappel : arbre binaire•Une arbre binaire de recherche est un arbre dont les nœuds ont au maximum 2 fils.E.ANSERMIN R.VERIN R.GRIGNON2

page 2

Page 3 : Principe de l’ABR•Une arbre binaire est un arbre dont les nœuds ont au maximum 2 fils.•Un arbre peut permettre de stocker des données. Si ces données ne sont pas organisées, la recherche d’élément n’est pas plus rapide que pour une liste.•Dans un arbre quelconque les opérations de recherches sont en On : tous les éléments doivent être parcourus.•Dans un tableau, on peut trier les données pour faciliter la recherche. Comment faire pour un arbre ? E.ANSERMIN R.VERIN R.GRIGNON3

page 3

Page 4 : ABR : définition •Un arbre binaire a est appelé Arbre Binaire de Recherche ABR si et seulement si :•les valeurs du sous-arbre de gauche sont racinea•les valeurs du sous-arbre de droite sont racinea •tout sous-arbre de a est un ABR•Remarque : selon la mise en œuvre de l’ABR, on interdit ou non des nœuds contenant des éléments de valeur égale.On travaillera dans notre cours avec des arbres à éléments uniques.E.ANSERMIN R.VERIN R.GRIGNON4

page 4

Page 5 : ABR : définition •Compléter cet arbre :E.ANSERMIN R.VERIN R.GRIGNON5

page 5

Page 6 : ABR : définition •Compléter cet arbre : une possibilitéE.ANSERMIN R.VERIN R.GRIGNON6

page 6

Page 7 : ABR : opération de recherche•Les ABR facilitent grandement les opérations de recherche : on sait quel sous-arbre explorer en fonction de la valeur du nœud sur lequel on se trouve.•Principe:•Comparaison avec la racine du nœud :•s’il est inférieur, recherche dans le sous-arbre gauche •s’il est supérieur, recherche dans le sous-arbre droit •Fin lorsque :•racine égale à la valeur cherchée •le sous-arbre gauche ou droit n’existe pas : la valeur n’est pas dans l’arbreE.ANSERMIN R.VERIN R.GRIGNON7

page 7

Page 8 : ABR : opération de recherche•AlgorithmeFONCTION recherchea: pointeur sur Arbre, e: Element : booleenDEBUTSI a EST EGAL A NULL Alors???SINON SI elementa EST EGAL A e Alors???SINON SI e EST INF. STRICT. A elementa ALORS???SINON???FIN SIFinE.ANSERMIN R.VERIN R.GRIGNON8

page 8

Page 9 : ABR : opération de recherche•AlgorithmeFONCTION recherchea: pointeur sur Arbre, e: Element : booleenDEBUTSI a EST EGAL A NULL AlorsRETOURNER FAUXSINON SI elementa EST EGAL A e AlorsRETOURNER VRAISINON SI e EST INF. STRICT. A elementa ALORSRETOURNER recherchefga,eSINONRETOURNER recherchefda,eFIN SIFinE.ANSERMIN R.VERIN R.GRIGNON9

page 9

Page 10 : ABR : opération de recherche•Algorithme : exemple : recherche a,40aFONCTION recherchea: pointeur sur Arbre, e: Element : booleenDEBUTSI a EST EGAL A NULL AlorsRETOURNER FAUXSINON SI elementa EST EGAL A e AlorsRETOURNER VRAISINON SI e EST INF. STRICT. A elementa ALORSRETOURNER recherchefga,eSINONRETOURNER recherchefda,eFIN SIFinE.ANSERMIN R.VERIN R.GRIGNON10

page 10

Page 11 : ABR : opération de recherche•Algorithme : exemple : recherche a,40aFONCTION recherchea: pointeur sur Arbre, e: Element : booleenDEBUTSI a EST EGAL A NULL AlorsRETOURNER FAUXSINON SI elementa EST EGAL A e AlorsRETOURNER VRAISINON SI e EST INF. STRICT. A elementa ALORSRETOURNER recherchefga,eSINONRETOURNER recherchefda,eFIN SIFinE.ANSERMIN R.VERIN R.GRIGNON11

page 11

Page 12 : ABR : opération de recherche•Algorithme : exemple : recherche a,40aFONCTION recherchea: pointeur sur Arbre, e: Element : booleenDEBUTSI a EST EGAL A NULL AlorsRETOURNER FAUXSINON SI elementa EST EGAL A e AlorsRETOURNER VRAISINON SI e EST INF. STRICT. A elementa ALORSRETOURNER recherchefga,eSINONRETOURNER recherchefda,eFIN SIFinE.ANSERMIN R.VERIN R.GRIGNON12

page 12

Page 13 : ABR : opération de recherche•Algorithme : exemple : recherche a,40aFONCTION recherchea: pointeur sur Arbre, e: Element : booleenDEBUTSI a EST EGAL A NULL AlorsRETOURNER FAUXSINON SI elementa EST EGAL A e AlorsRETOURNER VRAISINON SI e EST INF. STRICT. A elementa ALORSRETOURNER recherchefga,eSINONRETOURNER recherchefda,eFIN SIFinE.ANSERMIN R.VERIN R.GRIGNON13

page 13

Page 14 : ABR : opération de recherche•Algorithme : exemple : recherche a,40a= La fonction va retourner VRAI.FONCTION recherchea: pointeur sur Arbre, e: Element : booleenDEBUTSI a EST EGAL A NULL AlorsRETOURNER FAUXSINON SI elementa EST EGAL A e AlorsRETOURNER VRAISINON SI e EST INF. STRICT. A elementa ALORSRETOURNER recherchefga,eSINONRETOURNER recherchefda,eFIN SIFinE.ANSERMIN R.VERIN R.GRIGNON14

page 14

Page 15 : ABR : opération de recherche•Algorithme : exemple : recherche a,14aFONCTION recherchea: pointeur sur Arbre, e: Element : booleenDEBUTSI a EST EGAL A NULL AlorsRETOURNER FAUXSINON SI elementa EST EGAL A e AlorsRETOURNER VRAISINON SI e EST INF. STRICT. A elementa ALORSRETOURNER recherchefga,eSINONRETOURNER recherchefda,eFIN SIFinE.ANSERMIN R.VERIN R.GRIGNON15

page 15

Page 16 : FONCTION recherchea: pointeur sur Arbre, e: Element : booleenDEBUTSI a EST EGAL A NULL AlorsRETOURNER FAUXSINON SI elementa EST EGAL A e AlorsRETOURNER VRAISINON SI e EST INF. STRICT. A elementa ALORSRETOURNER recherchefga,eSINONRETOURNER recherchefda,eFIN SIFinABR : opération de recherche•Algorithme : exemple : recherche a,14aE.ANSERMIN R.VERIN R.GRIGNON16

page 16

Page 17 : ABR : opération de recherche•Algorithme : exemple : recherche a,14aFONCTION recherchea: pointeur sur Arbre, e: Element : booleenDEBUTSI a EST EGAL A NULL AlorsRETOURNER FAUXSINON SI elementa EST EGAL A e AlorsRETOURNER VRAISINON SI e EST INF. STRICT. A elementa ALORSRETOURNER recherchefga,eSINONRETOURNER recherchefda,eFIN SIFinE.ANSERMIN R.VERIN R.GRIGNON17

page 17

Page 18 : ABR : opération de recherche•Algorithme : exemple : recherche a,14a NULL= La fonction va retourner FAUX FONCTION recherchea: pointeur sur Arbre, e: Element : booleenDEBUTSI a EST EGAL A NULL AlorsRETOURNER FAUXSINON SI elementa EST EGAL A e AlorsRETOURNER VRAISINON SI e EST INF. STRICT. A elementa ALORSRETOURNER recherchefga,eSINONRETOURNER recherchefda,eFIN SIFinE.ANSERMIN R.VERIN R.GRIGNON18

page 18

Page 19 : ABR : opération de recherche•Compléxité :•Meilleur des cas :•Pire cas : •Cas moyen :E.ANSERMIN R.VERIN R.GRIGNON19

page 19

Page 20 : ABR : opération de recherche•Compléxité :•Meilleur des cas : élément trouvé de suite : O1•Pire cas : Tous les éléments à parcourir : Onquestion : a quoi ressemble l’arbre dans ce cas?•Cas moyen : O𝒍𝒐𝒈𝟐𝒏E.ANSERMIN R.VERIN R.GRIGNON20

page 20

Page 21 : ABR : opération d’insertion•L’insertion d’un nouvel élément dans l’arbre doit respecter les règles de l’ABR : il ne peut pas être inséré n’importe où. •Principe:On ajoute un nouvel élément en feuille, en respectant les propriétés d’un ABR :•L’ élément est déjà dans l’arbre, pas d’ajout •On descend au bout de l’unique branche pour rajouter l’élémentE.ANSERMIN R.VERIN R.GRIGNON21

page 21

Page 22 : ABR : opération d’insertion•L’insertion d’un nouvel élément dans l’arbre doit respecter les règles de l’ABR : il ne peut pas être inséré n’importe où. •Principe:On ajoute un nouvel élément en feuille, en respectant les propriétés d’un ABR :•L’ élément est déjà dans l’arbre, pas d’ajout •On descend au bout de l’unique branche pour rajouter l’élémentE.ANSERMIN R.VERIN R.GRIGNON22

page 22

Page 23 : ABR : opération d’insertion•Algorithme : FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON23

page 23

Page 24 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaE.ANSERMIN R.VERIN R.GRIGNON24

page 24

Page 25 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaE.ANSERMIN R.VERIN R.GRIGNON25

page 25

Page 26 : ABR : opération d’insertiona•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON26

page 26

Page 27 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaE.ANSERMIN R.VERIN R.GRIGNON27

page 27

Page 28 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON28

page 28

Page 29 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON29

page 29

Page 30 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON30

page 30

Page 31 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON31

page 31

Page 32 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON32

page 32

Page 33 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON33

page 33

Page 34 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON34

page 34

Page 35 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON35

page 35

Page 36 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON36

page 36

Page 37 : ABR : opération d’insertiona NULL•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON37

page 37

Page 38 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaaa NULLE.ANSERMIN R.VERIN R.GRIGNON38

page 38

Page 39 : ABR : opération d’insertion•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaaa NULLE.ANSERMIN R.VERIN R.GRIGNON39

page 39

Page 40 : •Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINABR : opération d’insertiona 11aaaE.ANSERMIN R.VERIN R.GRIGNON40

page 40

Page 41 : •Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINABR : opération d’insertiona 11aaaE.ANSERMIN R.VERIN R.GRIGNON41

page 41

Page 42 : ABR : opération d’insertion11•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON42

page 42

Page 43 : •Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINABR : opération d’insertion11aaaE.ANSERMIN R.VERIN R.GRIGNON43

page 43

Page 44 : ABR : opération d’insertion11•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON44

page 44

Page 45 : ABR : opération d’insertion11•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON45

page 45

Page 46 : ABR : opération d’insertiona11•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON46

page 46

Page 47 : ABR : opération d’insertiona11•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON47

page 47

Page 48 : ABR : opération d’insertion11•Algorithme : Exemple : insertionABRa, 11FONCTION insertionABRa: pointeur sur Arbre, e: Element : pointeur sur ArbreDEBUTSI a EST EGAL A NULL ALORSRETOURNER creerArbree SINON SI e EST INF. STRICT. A elementa ALORSfga ← insertionABRfga, eSINON SI e SUP. STRICT. A elementa Alorsfda ← insertionABRfda, eFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON48

page 48

Page 49 : ABR : opération de suppression•La suppression d’un nœud dans un arbre binaire consiste à supprimer uniquement le nœud ciblé : ses fils doivent rester dans l’arbre.•Il faut maintenir la relation d’ordre imposée par l’ABR !•Il y a plusieurs cas à considérer:•Suppression d’une feuille •Le nœud à supprimer a un fils•Le nœud à supprimer a deux filsE.ANSERMIN R.VERIN R.GRIGNON49

page 49

Page 50 : ABR : opération de suppression•Il y a plusieurs cas à considérer:•Suppression d’une feuille •Le nœud à supprimer a un fils•Le nœud à supprimer a deux fils•Aucune réorganisation de l’arbre est nécessaire : E.ANSERMIN R.VERIN R.GRIGNON50

page 50

Page 51 : ABR : opération de suppression•Il y a plusieurs cas à considérer:•Suppression d’une feuille •Le nœud à supprimer a un fils•Le nœud à supprimer a deux filsE.ANSERMIN R.VERIN R.GRIGNON51

page 51

Page 52 : ABR : opération de suppression•Il y a plusieurs cas à considérer:•Suppression d’une feuille •Le nœud à supprimer a un fils•Le nœud à supprimer a deux fils•On remplace le nœud par son fils unique :E.ANSERMIN R.VERIN R.GRIGNON52

page 52

Page 53 : ABR : opération de suppression•Il y a plusieurs cas à considérer:•Suppression d’une feuille •Le nœud à supprimer a un fils•Le nœud à supprimer a deux filsE.ANSERMIN R.VERIN R.GRIGNON53

page 53

Page 54 : ABR : opération de suppression•Il y a plusieurs cas à considérer:•Suppression d’une feuille •Le nœud à supprimer a un fils•Le nœud à supprimer a deux fils•On remplace le nœud par son prédécesseur ou son successeur en valeur, dans son sous-arbre gauche ou droit3E.ANSERMIN R.VERIN R.GRIGNON54

page 54

Page 55 : ABR : opération de suppression•Il y a plusieurs cas à considérer:•Suppression d’une feuille •Le nœud à supprimer a un fils•Le nœud à supprimer a deux fils•On remplace le nœud par son prédécesseur ou son successeur dans son sous-arbre gauche ou droit•Version 1 : le prédécesseur dans le sous-arbre gauche est la feuille la plus à droite plus grand élément du sous-arbre•Version 2 : le successeur dans le sous-arbre droit est la feuille la plus à gauche plus petit élément du sous-arbreE.ANSERMIN R.VERIN R.GRIGNON55

page 55

Page 56 : ABR : opération de suppression•Il y a plusieurs cas à considérer:•Suppression d’une feuille •Le nœud à supprimer a un fils•Le nœud à supprimer a deux fils•On remplace le nœud par son prédécesseur ou son successeur dans son sous-arbre gauche oudroit•Version 1 : le prédécesseur dans le sous-arbre gauche est la feuille la plus à droite plus grand élément du sous-arbre•Version 2 : le successeur dans le sous-arbre droit est la feuille la plus à gauche plus petit élément du sous-arbre3E.ANSERMIN R.VERIN R.GRIGNON56

page 56

Page 57 : ABR : opération de suppression•Il y a plusieurs cas à considérer:•Suppression d’une feuille •Le nœud à supprimer a un fils•Le nœud à supprimer a deux fils•On remplace le nœud par son prédécesseur ou son successeur dans son sous-arbre gauche ou droit•Version 1 : le prédécesseur dans le sous-arbre gauche est la feuille la plus à droite plus grand élément du sous-arbre•Version 2 : le successeur dans le sous-arbre droit est la feuille la plus à gauche plus petit élément du sous-arbre•Principe : •On recherche le nœud à supprimer•S’il n’a pas de fils gauche, on le remplace par son fils droit fils unique•Sinon on cherche la plus grande valeur du sous-arbre gauche valeur la plus à droite et on échange sa valeur avec la valeur du nœud à supprimer. E.ANSERMIN R.VERIN R.GRIGNON57

page 57

Page 58 : ABR : opération de suppression•Algorithme :FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbre SINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e…FIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON58

page 58

Page 59 : ABR : opération de suppression•Algorithme :FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp…FIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON59

page 59

Page 60 : ABR : opération de suppression•Algorithme :FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON60

page 60

Page 61 : ABR : opération de suppression•Algorithme :FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON61

page 61

Page 62 : ABR : opération de suppressiona•Algorithme : suppression a, 8E.ANSERMIN R.VERIN R.GRIGNON62

page 62

Page 63 : ABR : opération de suppressiona•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON63

page 63

Page 64 : ABR : opération de suppressiona•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON64

page 64

Page 65 : ABR : opération de suppressiona•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON65

page 65

Page 66 : ABR : opération de suppressiona•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON66

page 66

Page 67 : ABR : opération de suppressiona•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON67

page 67

Page 68 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON68

page 68

Page 69 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON69

page 69

Page 70 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON70

page 70

Page 71 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON71

page 71

Page 72 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON72

page 72

Page 73 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON73

page 73

Page 74 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON74

page 74

Page 75 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON75

page 75

Page 76 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON76

page 76

Page 77 : •Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINABR : opération de suppressionaaaaE.ANSERMIN R.VERIN R.GRIGNON77

page 77

Page 78 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaaE.ANSERMIN R.VERIN R.GRIGNON78

page 78

Page 79 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaaE.ANSERMIN R.VERIN R.GRIGNON79

page 79

Page 80 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaaE.ANSERMIN R.VERIN R.GRIGNON80

page 80

Page 81 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaaE.ANSERMIN R.VERIN R.GRIGNON81

page 81

Page 82 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaaE.ANSERMIN R.VERIN R.GRIGNON82

page 82

Page 83 : ABR : opération de suppressiontmp•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaaE.ANSERMIN R.VERIN R.GRIGNON83

page 83

Page 84 : ABR : opération de suppressiona NULLtmp•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON84

page 84

Page 85 : ABR : opération de suppressiona NULL•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON85

page 85

Page 86 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON86

page 86

Page 87 : ABR : opération de suppression•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON87

page 87

Page 88 : ABR : opération de suppressionaa•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON88

page 88

Page 89 : ABR : opération de suppressionaa•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON89

page 89

Page 90 : ABR : opération de suppressiona•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON90

page 90

Page 91 : ABR : opération de suppressiona•Algorithme : suppression a, 8FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON91

page 91

Page 92 : ABR : opération de suppression•Algorithme : suppression a, 6E.ANSERMIN R.VERIN R.GRIGNON92

page 92

Page 93 : ABR : opération de suppressiona•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON93

page 93

Page 94 : ABR : opération de suppressiona•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON94

page 94

Page 95 : ABR : opération de suppressiona•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON95

page 95

Page 96 : ABR : opération de suppressiona•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON96

page 96

Page 97 : ABR : opération de suppressiona•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON97

page 97

Page 98 : ABR : opération de suppression•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON98

page 98

Page 99 : ABR : opération de suppression•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON99

page 99

Page 100 : ABR : opération de suppression•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON100

page 100

Page 101 : ABR : opération de suppression•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON101

page 101

Page 102 : ABR : opération de suppression•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON102

page 102

Page 103 : •Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINABR : opération de suppressionaaaE.ANSERMIN R.VERIN R.GRIGNON103

page 103

Page 104 : •Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINABR : opération de suppressionaaaE.ANSERMIN R.VERIN R.GRIGNON104

page 104

Page 105 : •Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINABR : opération de suppressionaaaE.ANSERMIN R.VERIN R.GRIGNON105

page 105

Page 106 : •Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINABR : opération de suppressionaaaE.ANSERMIN R.VERIN R.GRIGNON106

page 106

Page 107 : •Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINABR : opération de suppressionaa NULLaaE.ANSERMIN R.VERIN R.GRIGNON107

page 107

Page 108 : •Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINABR : opération de suppressionaa NULLaaE.ANSERMIN R.VERIN R.GRIGNON108

page 108

Page 109 : •Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINABR : opération de suppressionaa NULLaaE.ANSERMIN R.VERIN R.GRIGNON109

page 109

Page 110 : •Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINABR : opération de suppressionaaaE.ANSERMIN R.VERIN R.GRIGNON110

page 110

Page 111 : •Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINABR : opération de suppressionaaaE.ANSERMIN R.VERIN R.GRIGNON111

page 111

Page 112 : ABR : opération de suppression•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON112

page 112

Page 113 : ABR : opération de suppressionaa•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON113

page 113

Page 114 : ABR : opération de suppressiona•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON114

page 114

Page 115 : ABR : opération de suppressiona•Algorithme : suppression a, 6FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON115

page 115

Page 116 : ABR : opération de suppressiona•Algorithme : suppression a, 50 E.ANSERMIN R.VERIN R.GRIGNON116

page 116

Page 117 : ABR : opération de suppressiona•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON117

page 117

Page 118 : ABR : opération de suppressiona•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON118

page 118

Page 119 : ABR : opération de suppressiona•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON119

page 119

Page 120 : ABR : opération de suppressiona•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON120

page 120

Page 121 : ABR : opération de suppressionaa•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON121

page 121

Page 122 : ABR : opération de suppressionaa•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON122

page 122

Page 123 : ABR : opération de suppressionaa•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON123

page 123

Page 124 : ABR : opération de suppressionaa•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON124

page 124

Page 125 : ABR : opération de suppressionaaa•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON125

page 125

Page 126 : ABR : opération de suppression•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON126

page 126

Page 127 : ABR : opération de suppression•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON127

page 127

Page 128 : ABR : opération de suppression•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON128

page 128

Page 129 : ABR : opération de suppression•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON129

page 129

Page 130 : ABR : opération de suppression•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON130

page 130

Page 131 : ABR : opération de suppression•Algorithme : suppression a,50 peFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaE.ANSERMIN R.VERIN R.GRIGNON131

page 131

Page 132 : ABR : opération de suppression•Algorithme : suppression a,50 peFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaE.ANSERMIN R.VERIN R.GRIGNON132

page 132

Page 133 : ABR : opération de suppression•Algorithme : suppression a,50 peFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaE.ANSERMIN R.VERIN R.GRIGNON133

page 133

Page 134 : ABR : opération de suppression•Algorithme : suppression a,50 peFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON134

page 134

Page 135 : ABR : opération de suppression•Algorithme : suppression a,50 peFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON135

page 135

Page 136 : ABR : opération de suppression•Algorithme : suppression a,50 peFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON136

page 136

Page 137 : ABR : opération de suppression•Algorithme : suppression a,50 peFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON137

page 137

Page 138 : ABR : opération de suppression•Algorithme : suppression a,50 peFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON138

page 138

Page 139 : ABR : opération de suppression•Algorithme : suppression a,50 peFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON139

page 139

Page 140 : ABR : opération de suppression•Algorithme : suppression a,50 peFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON140

page 140

Page 141 : ABR : opération de suppression•Algorithme : suppression a,50 apeaatmpFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON141

page 141

Page 142 : ABR : opération de suppression•Algorithme : suppression a,50 pea NULLtmpFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON142

page 142

Page 143 : ABR : opération de suppression•Algorithme : suppression a,50 pea NULLFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINtmpaaE.ANSERMIN R.VERIN R.GRIGNON143

page 143

Page 144 : ABR : opération de suppression•Algorithme : suppression a,50 peFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON144

page 144

Page 145 : ABR : opération de suppression•Algorithme : suppression a,50 peFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON145

page 145

Page 146 : ABR : opération de suppression•Algorithme : suppression a,50 apeFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON146

page 146

Page 147 : ABR : opération de suppression•Algorithme : suppression a,50 apeFONCTION suppMaxa: arbre, pe: Ptr sur Element : ptr sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// on rappelle la fonction avec le fils droitSI existeFilsDroita Alorsfda ← suppMaxfda, pe// Si plus de fils droit, on a le successeur SINONpe ← elementatmp ← aa ← fgalibérertmpFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON147

page 147

Page 148 : ABR : opération de suppression•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON148

page 148

Page 149 : ABR : opération de suppression•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaaE.ANSERMIN R.VERIN R.GRIGNON149

page 149

Page 150 : ABR : opération de suppression•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON150

page 150

Page 151 : ABR : opération de suppression•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINaaE.ANSERMIN R.VERIN R.GRIGNON151

page 151

Page 152 : ABR : opération de suppressiona•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON152

page 152

Page 153 : ABR : opération de suppressiona•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON153

page 153

Page 154 : ABR : opération de suppression•Algorithme : suppression a, 50FONCTION suppressiona: pointeur sur Arbre, e: element : pointeur sur ArbreVARIABLEtmp : ptr sur ArbreDEBUT// element non présent dans l’arbreSI a EST EGAL A NULL AlorsRETOURNER a// parcours récursif de l’arbreSINON SI e SUP. STRICT. A elementafda ← suppressionfda, eSINON SI e INF. STRICT. A elementa fga ← suppressionfga, e// élément trouvé : remplacement par fils uniqueSINON SI NON existeFilsGaucheatmp ← aa ← fdalibérertmp// élément trouvé : remplacement par prédécesseurSINONfga ← suppMaxfga, adresseelementaFIN SIRETOURNER aFINE.ANSERMIN R.VERIN R.GRIGNON154

page 154

Page 155 : Résumé•Les arbres binaires de recherche sont des arbres binaires dont les éléments respectent une relation d’ordre :•tout élément d’un sous-arbre gauche doit être inférieur strictement à la racine•tout élément d’un sous-arbre droit doit être supérieur strictement à la racine•Dans notre cours, nous imposons un cas particulier : l’arbre ne contient que des valeurs distinctes d’éléments •Cette structure permet d’accélérer les opérations de recherche O𝑙𝑜𝑔2 plutôt que On pour les arbres binaires classiques.•Les opérations d’insertions et de suppressions doivent maintenir la relation d’ordre. •Il existe encore d’autres moyens d’optimiser la recherche dans un ABR : c’est le sujet du prochain cours !E.ANSERMIN R.VERIN R.GRIGNON155

page 155

Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155

Le contenu de cet article est la propriété exclusive de son auteur.