Arbre binaire de recherche

Slides:



Advertisements
Présentations similaires
Structures de données avancées : Principales structures de données
Advertisements

Structures de données avancées : MTH ( Multidimensional trie hashing )
CHAPITRE 5 Suites réelles.
Chapitre 3 Les arbres binaires
Un langage de programmation logique
Algorithmes à base darbre BSP. Principe Se servir dune structure arborescente afin déliminer le traitement dune branche entière sur un test de visualisation.
CHAPITRE 2 Nombres entiers, initiation à l’arithmétique- Nombres rationnels.
Les fonctions de XPath et XSLT
1 Révisions. 2 Tableaux non contraints Déclaration du type : type Tvecteur = tableau ( intervalle dentiers) de entiers type Tvecteur is array (integer.
Chapitre III. Algorithmique élémentaire des tableaux (recherche, tri)
On parle darbre de recherche dune question *Racine de larbre : question *Nœuds : points de choix (formule à démontrer) *Passage dun nœud vers son fils.
Chapitre VIII. Introduction aux graphes
Structures de données linéaires
Chapitre V. Tables de hachage
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Cours d’Algorithmique
LOGO Responsable du cours Mlle Amina GHRAB : 1 ère année IAG Institut Supérieur de Gestion de Tunis.
OCaml – Les arbres L3 MI.
Les structures de données arborescentes
Chapitre VII. Tri Tri par tas Tri rapide.
RECURSIVITE ARBRES BINAIRES
Arbre Rouge Noir.
TD4 2 MIC Romaric GUILLERM Algo-Prog en Ada.
Les fichiers indexés (Les B-arbres)
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
LES ARBRES IUP 2 Génie Informatique
Structures de données IFT-2000
Les listes chaînées par Frédérick Henri.
Les arbres binaires.
IV. Arbres  Arbre binaire (AB) Représentation SDD d’un AB
201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Exploration systématique de graphes
ALGORITHMIQUE Recherches : Tris : séquentielle, dichotomique
Mathématiques Discrètes
MIGO ET COMPLEXITE1 ARBRES EQUILIBRES Définition : On dit qu’un arbre binaire est H équilibré si en tout nœud de l’arbre, les hauteurs des sous-arbres.
Arbres binaires et tables de hachage
Outils pour la programmation logique par contraintes
Exploration systématique de graphes
Structures de données avancées : Arbres AA
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
1 1 Huitième journée Quelques algorithmes. 2 Définition Description des tâches pour que celles-ci soient aisément programmables Différent d’une méthode.
Alignement de génomes. MUMmer (1999) Utilise l’arbre des suffixe. Basé sur le principe de « Maximum Unique Match » (MUM). Étant donné deux génomes A et.
Algorithmique et Conception Objet
Distribution symétrique
B.Shishedjiev - Modèle relationnel
Les nombres décimaux et les pourcentages
Pour Chapitre 1 – Sens de Nombres
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Le tableau périodique.
Structures de données avancées : Principales structures de données
Cours 5 - Trois algorithmes de tri d'un tableau
Structures de données avancées : MTH ( Multidimensional trie hashing ) D. E ZEGOUR Institut National d ’Informatique.
Limites des fonctions de référence
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 10 Les algorithmes de recherche Les structures arborescentes Département d’informatique et de génie.
VI. Tri par tas.
Les monceaux (Heap) Monceaux Propriétés des Monceaux
MATHEMATIQUES en 5°.
CSI25101 Maps et Dictionnaries. CSI25102 Un dictionnaire (dictionary) est un modèle abstrait de base de données. tel une file à priorité, un dictionnaire.
Arbres AVL - Hauteur d’un arbre AVL - Insertion et restructuration
1 Courbes Bsplines non uniformes Bsplines uniformes 1.Nombre de points de définition 2.Position des points de définition 3.Degré m des polynômes Paramètres.
4/25/2017 4:30 PM Arbres (2,4) CSI2510 CSI2510.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
Page: 1-Ali Walid Gestion de fichiers. B-Arbre +.
. Le B-Arbre.
Les arbres Arbres binaires
1. Tri rapide ou Quicksort Principe : La méthode du Quicksort due au C.A. Hoare (1962) utilise les principes généraux de division et équilibrage. 2.
La comparaison et la mise en ordre des nombres rationnels
La compression de données
Transcription de la présentation:

Arbre binaire de recherche 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 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.

Exemple d’arbre binaire de recherche

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

Recherche d’un élément dans un arbre binaire de recherche Le principe de la recherche est donné comme suit: Si l’arbre est vide : échec Recherche négative : l’élément n’appartient pas à l’arbre, on arrête la recherche Sinon : comparer l’élément avec l'étiquette de la racine de l’arbre S’il 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

Recherche d’un élément dans un arbre binaire de recherche La recherche d’un élément dans ce type d’arbre 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:

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

Insertion dans un ABR Principe 2 stratégies : 2 styles Déterminer la place où insérer Réaliser l’insertion 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

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 d l e i g t q

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

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

Insérer f à la racine pour ajouter un élément à la racine d’un arbre binaire de recherche, il faut d’abord couper l’arbre 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 l’arbre de racine x et de sous-arbre gauche G et de sous-arbre droit D e l g a i d q t G D a d e g i q t l f

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)))

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)))

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

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 x Ad  ****dessins pour les cas 1, 2, et sur la page suivante cas 3 • La plus grande clé du sous-arbre gauche : - c’est la clé de l’élément immédiatement inférieur à l’élément à supprimer - On la trouve en parcourant le sous-arbre gauche le plus à droite possible, c'est l'étiquette du premier nœud qui n'a pas de fils droit. Raccrocher correctement consiste à remplacer cette clé par son fils gauche • Exemple r x Ad  fils

Exemple e p m x s e x l l p m Suppression de s Remplacer s par p (la plus grande clé du fils gauche de s) Remplacer p par son fils gauche e p m x s e x l l Supprimer m : facile il n’a pas de fils Supprimer e : on remplace le e le plus au haut par son suivant et on raccroche l Supprimer encore un e : idem Encore un on remplace e par l Supprimer p : on le remplace par l Supprimer l : on le remplace par x Supprimer x Reste un arbre vide. 1 p m 2

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 Code en C : ABR AbrSupprimer (ELEMENT x, ABR a) { /* retourne l'arbre A où l'on a supprimé l'elt x ; "construction sur place" par appel aux primitives à effets de bord Greffer et ModifierValeur des arbres binaires*/ int d ; ELEMENT max ; if (ArbinVide(a)) return ArbinCreer() ; d = ElementComparer(x,ArbinValeur(a)) ; if (d == 0 ) /* x = Valeur (a), supprimer la racine de a */ if (ArbinVide(ArbinGauche(a))) a = ArbinDroit(a) ; else if(ArbinVide(ArbinDroit(a))) a = ArbinGauche(a) ; else { /* a possède 2 fils non vides */ ArbinGrefferAGauche(AbrSupprimeMax(&max, ArbinGauche(a)), a) ; ArbinModifierValeur( max, a); } else /* x est différent de l'étiquette de la racine de a*/ if (d < 0) ArbinGrefferAGauche(AbrSupprimer(x, ArbinGauche(a)), a); else ArbinGrefferADroite(AbrSupprimer(x, ArbinDroit(a)), a); return a;