Arbres Binaires de Recherche : Introduction



Documents pareils
Les structures de données. Rajae El Ouazzani

Quelques Algorithmes simples

ARBRES BINAIRES DE RECHERCHE

Les arbres binaires de recherche

Arbres binaires de recherche

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

INF601 : Algorithme et Structure de données

Définitions. Numéro à préciser. (Durée : )

Algorithmique I. Algorithmique I p.1/??

Algorithmique et Programmation

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Algorithmique, Structures de données et langage C

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Architecture des Systèmes d Information Architecture des Systèmes d Information

Algorithmes récursifs

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Java Licence Professionnelle CISII,

Algorithmique et Programmation, IMA

1 Recherche en table par balayage

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

UE C avancé cours 1: introduction et révisions

Recherche dans un tableau

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Licence Sciences et Technologies Examen janvier 2010

Gestion mémoire et Représentation intermédiaire

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

STAGE IREM 0- Premiers pas en Python

Représentation d un entier en base b

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Organigramme / Algorigramme Dossier élève 1 SI

Examen Médian - 1 heure 30


Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Corrigé des TD 1 à 5

Initiation à l algorithmique

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

TD3: tableaux avancées, première classe et chaînes

M é ca n ism e Pr o lo g. Ex e m p le

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

OCL - Object Constraint Language

Initiation. àl algorithmique et à la programmation. en C

chapitre 4 Nombres de Catalan

Programmation Classique en langage C

Algorithmique & programmation

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

ACTIVITÉ DE PROGRAMMATION

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Projet de programmation (IK3) : TP n 1 Correction

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Plan du cours. Historique du langage Nouveautés de Java 7

Objets et Programmation. origine des langages orientés-objet

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Quelques algorithmes simples dont l analyse n est pas si simple

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Bases de programmation. Cours 5. Structurer les données

MIS 102 Initiation à l Informatique

Cours de Systèmes d Exploitation

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Programmation C++ (débutant)/instructions for, while et do...while

Initiation à la Programmation en Logique avec SISCtus Prolog

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Algorithmes de recherche d itinéraires en transport multimodal

Introduction à MATLAB R

Programmation avec Xcas ou Python

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Chapitre 7. Récurrences

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" ;; let appliquer = List.map ;; (* affichage d'un noeud *)

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Fondements de l informatique Logique, modèles, et calculs

Université de Strasbourg UFR de Mathématique et d'informatique. L2 Informatique Semestres S3 et S4. Structures de Données et Algorithmes 1 et 2

Algorithme. Table des matières

Solutions du chapitre 4

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Algorithmes sur les mots (séquences)

Cours 1 : Qu est-ce que la programmation?

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Conception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 17/04/2007

Chapitre VI- La validation de la composition.

Application 1- VBA : Test de comportements d'investissements

Administration réseau Résolution de noms et attribution d adresses IP

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Synthèse d'images I. Venceslas BIRI IGM Université de Marne La

CAC: Un algorithme d arc-consistance. configurable, générique et adaptatif.

CHAPITRE 9. Codes source. 9.1 Insertion brute

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Calculabilité Cours 3 : Problèmes non-calculables.

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Transcription:

Arbres Binaires de Recherche : Introduction I. Guessarian cours ISN 11 janvier 2012 LIAFA, CNRS and University Paris Diderot 1/13

Arbre Binaire de Recherche Un Arbre Binaire de Recherche (ABR) est un arbre binaire étiqueté par des éléments d un ensemble A totalement ordonné et tel que si a est l étiquette d un nœud n, tous les nœuds du sous-arbre gauche de n sont étiquetés par des éléments b tels que b a, ET tous les nœuds du sous-arbre droit de n sont étiquetés par des éléments b tels que b > a LIAFA, CNRS and University Paris Diderot 2/13

Exemple 100 100 22 202 53 202 143 143 78 53 177 177 22 78 b. un arbre binaire a. un arbre binaire de recherche Exemple LIAFA, CNRS and University Paris Diderot 3/13

Parcours dans les arbres parcours en largeur parcours en profondeur parcours infixe parcours préfixe parcours postfixe (ou suffixe) Le parcours infixe d un arbre binaire de recherche donne la suite des étiquettes en ordre croissant. Exemple LIAFA, CNRS and University Paris Diderot 4/13

Algorithmes simples sur les arbres binaires (de recherche) parcours infixe recherche d un élément recherche du maximum (minimum) construction d un ABR (insérer un élément dans un ABR) Algorithmes sur les Arbres LIAFA, CNRS and University Paris Diderot 5/13

parcours infixe PARCOURS-IN (arbre T ) Var liste d entiers L, L 1, L 2 if (T == ) then L = else L 1 =PARCOURS-IN(sous-arbre-gauche(T )) L 2 =PARCOURS-IN(sous-arbre-droit(T )) L = L 1 label T (racine(t )) L 2 retourner L Algorithmes sur les Arbres LIAFA, CNRS and University Paris Diderot 6/13

Maximum MAX (arbre T ) Var nœud n n = racine(t ) while (T (filsdroit(n)) NIL) do n = filsdroit(n) retourner T (n) Notation On note T (n) l étiquette du nœud n ( label T (n)) Algorithmes sur les Arbres LIAFA, CNRS and University Paris Diderot 7/13

Recherche d un élément RECHERCHER (arbre T, entier k) Var nœud n n = racine(t ) while ((T (n) NIL) (T (n) k)) do if (k < T (n)) then n = filsgauche(n) else n = filsdroit(n) if (T (n) NIL) then afficher k est dans T else afficher k n est pas dans T Algorithmes sur les Arbres LIAFA, CNRS and University Paris Diderot 8/13

INSERER (arbre T, entier v) // Algorithme récursif Var nœud x x = racine(t ) if (T == ) then T = (v,, ) else if (v < T (x)) then INSERER(sous-arbre-gauche(T),v) else if (v > T (x)) then INSERER(sous-arbre-droit(T),v) Algorithmes sur les Arbres LIAFA, CNRS and University Paris Diderot 9/13

INSERER (arbre T, entier v) // Algorithme itératif Var nœud x, y Var arbre T T = T y = NIL x = racine(t ) while (x NIL) do y = x if (v < T (x)) then T = sous-arbre-gauche(t ) if (v > T (x)) then T = sous-arbre-droit(t ) x = racine(t ) Algorithmes sur les Arbres LIAFA, CNRS and University Paris Diderot 10/13

/* suite de INSERER */ parent(x) = y; if (T == ) then T = (v,, ) else if (v < T (y)) then sous-arbre-gauche(y) = (v,, ) /* le sous-arbre gauche vide de y est remplacé par (v,, ) */ if (v > T (y)) then sous-arbre-droit(y) = (v,, ) /* le sous-arbre droit vide de y est remplacé par (v,, ) */ Algorithmes sur les Arbres LIAFA, CNRS and University Paris Diderot 11/13

Exercices Exercice 1 Ecrire un algorithme récursif qui cherche le maximum d un arbre binaire de recherche, puis le programme Javascool correspondant (à ajouter comme méthode dans la classe abr.jvs). Exercice 2 Ecrire un algorithme récursif qui cherche un élément dans un arbre binaire de recherche, puis le programme Javascool correspondant (à ajouter comme méthode dans la classe abr.jvs). Algorithmes sur les Arbres LIAFA, CNRS and University Paris Diderot 12/13

Exercices (suite) Exercice 3 Ecrire le programme Javascool correspondant à l agorithme TRI-FUSION vu en cours. Pour implémenter la version avec sentinelle du cours, on pourrait au préalable définir une méthode JAVA qui calcule le maximum d un tableau. Algorithmes sur les Arbres LIAFA, CNRS and University Paris Diderot 13/13