La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Chapitre 5 Arbre binaire de recherche. Arbre binaire de recherche (ABR) Est un arbre binaire dans lequel: –Chaque nœud possède une clé, –Chaque nœud du.

Présentations similaires


Présentation au sujet: "Chapitre 5 Arbre binaire de recherche. Arbre binaire de recherche (ABR) Est un arbre binaire dans lequel: –Chaque nœud possède une clé, –Chaque nœud du."— Transcription de la présentation:

1 Chapitre 5 Arbre binaire de recherche

2 Arbre binaire de recherche (ABR) Est un arbre binaire dans lequel: –Chaque nœud possède une clé, –Chaque nœud du sous-arbre gauche possède une clé inférieure ou égale à celle du nœud considéré, –Chaque nœud du sous-arbre droit possède une clé supérieure ou égale à celle-ci.

3 Exemple darbre binaire de recherche

4 Arbre binaire de recherche Propriété : –Le parcours symétrique (infixe) d'un ABR permet d'obtenir les éléments par ordre croissant.

5 Recherche dun élément dans un arbre binaire de recherche Le principe de la recherche est donné comme suit: Si larbre est vide : échec –Recherche négative : lélément nappartient pas à larbre, on arrête la recherche Sinon : comparer lélément avec l'étiquette de la racine de larbre –Sil y a égalité : on a trouvé Recherche positive, on arrête la recherche –Si lélément est plus petit que la racine On poursuit la recherche sur le sous-arbre gauche –Si lélément est plus grand On poursuit la recherche sur le sous-arbre droit

6 Recherche dun élément dans un arbre binaire de recherche La recherche dun élément dans ce type darbre est une généralisation de la recherche dichotomique dans un vecteur. La procédure de recherche dans un arbre de recherche est donnée comme suit:

7 Recherche dun élément dans un arbre binaire de recherche Procédure recherche(entrée Racine:, x:réel; sortie Adr : ); Début Si racine=nil Alors Adr:=nil; Sinon Si Valeur(racine)>x Alors Recherche(Gauche(racine),x,Adr); Sinon Si Valeur(racine)

8 Insertion dans un ABR Principe 1.Déterminer la place où insérer 2.Réaliser linsertion 2 stratégies : –avec répétition –sans répétition 2 styles –impératif : construction sur place insertion en feuille –fonctionnel : construction à côté insertion à la racine

9 Insertion en feuille dans un ABR (1) Principe : parcourir l'arbre jusqu'à trouver une "place vide" (feuille, fils gauche vide ou fils droit vide) où placer « correctement » x a e i t a e i e i e a d l e i gt q a d e i gt q a d e i gt a d e i t

10 Insertion en feuille dans un ABR (2) Insérer (x, A) si A est vide –alors A = créer une feuille de valeur x –sinon si x Valeur(A) alors si le sous-arbre gauche est vide –alors greffer à gauche de A une feuille d'étiquette x –sinon Insérer x dans le sous-arbre gauche de A sinon si le sous-arbre droit est vide –alors greffer à droite de A une feuille de valeur x –sinon Insérer x dans le sous-arbre droit de A

11 Insertion à la racine dans un ABR utilisée pour une recherche adaptative –permet de retrouver plus rapidement les derniers éléments entrés principe : construire un nouvel arbre dont –la racine est x –le sous-arbre gauche G est une copie de l'arbre A où l'on a taillé tous les éléments supérieurs à x –le sous-arbre droit D est une copie de l'arbre A où l'on a taillé tous les éléments inférieurs (ou égaux) à x

12 Insérer f à la racine pour ajouter un élément à la racine dun arbre binaire de recherche, il faut dabord couper larbre initial en 2 arbres G et D contenant respectivement tous les éléments inférieurs ou égaux à x et tous les éléments supérieurs à x, puis former larbre de racine x et de sous-arbre gauche G et de sous-arbre droit D G D a d e g i q t l f el g a i d q t

13 Tailler les éléments supérieurs à x TaillerSup(x, A) Si A est vide alors retourner arbre vide sinon si x > Valeur(A) alors Construire(Valeur(A),Gauche(A),TaillerSup(x, Droit(A))) sinon si x = Valeur(A) alors Construire(Valeur(A),Gauche(A), arbre vide) sinon (*x < Valeur(A)* ) TaillerInf(x, Gauche(A)))

14 Tailler les éléments inférieurs à x TaillerInf(x, A) Si A est vide alors retourner arbre vide sinon si x < Valeur(A) alors Construire ( Valeur(A), TaillerInf(x,Gauche(A)), Droit(A)) sinon (*x Valeur(A)*) TaillerSup((x, Droit(A)))

15 Insérer à la racine InsererRacine(x, A) Construire( x,TaillerSup(x, A), TaillerInf(x, A))

16 Suppression dans un ABR(1) principe : chercher si l'élément est présent dans l'abr si l'élément est la valeur d'un nœud –sans fils : couper la feuille (1) –avec un seul fils : remplacer le nœud par ce fils (2) –avec deux fils : remplacer la valeur du nœud par –la plus grande clé du sous-arbre gauche (3) ou –la plus petite clé du sous-arbre droit Puis raccrocher correctement r xAd r xAd fils

17 Exemple Suppression de s 1. Remplacer s par p (la plus grande clé du fils gauche de s) 2. Remplacer p par son fils gauche e e e s x l p m l e e e p m x 1 2

18 Suppression dans un ABR Supprimer(x, A) si A est vide retourner A si x < Valeur(A) alors –greffer à gauche de A le résultat de Supprimer x dans le sous-arbre gauche de A et retourner A ainsi modifié si x > Valeur(A) alors idem à droite si x = Valeur(A) alors si A (le nœud d'étiquette x ) –n'a pas de fils : retourner l'arbre vide –a un seul fils (non vide) : retourner ce fils –a deux fils non vides : (B, Max) = SupprimerMax(Gauche(A)) modifier étiquette de A avec Max, son fils gauche avec B retourner A


Télécharger ppt "Chapitre 5 Arbre binaire de recherche. Arbre binaire de recherche (ABR) Est un arbre binaire dans lequel: –Chaque nœud possède une clé, –Chaque nœud du."

Présentations similaires


Annonces Google