Chap. VII : arbres binaires



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

Arbres binaires de recherche

INF601 : Algorithme et Structure de données

ARBRES BINAIRES DE RECHERCHE

Les arbres binaires de recherche

Génie Logiciel avec Ada. 4 février 2013

Algorithmique & programmation

Quelques Algorithmes simples

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Algorithmique, Structures de données et langage C

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

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

Recherche dans un tableau

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

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

Algorithmique et Programmation

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Corrigé des TD 1 à 5

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

Utilitaires méconnus de StrataFrame

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Initiation à l algorithmique

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

chapitre 4 Nombres de Catalan

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

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Formats d images. 1 Introduction

Java Licence Professionnelle CISII,

Programmation par contraintes. Laurent Beaudou

Chapitre 7. Récurrences

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Gestion mémoire et Représentation intermédiaire

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

Cours Bases de données 2ème année IUT

Application 1- VBA : Test de comportements d'investissements

Introduction à MATLAB R

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

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

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Ordonnancement temps réel

Qualité du logiciel: Méthodes de test

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

V- Manipulations de nombres en binaire

STAGE IREM 0- Premiers pas en Python

Manipulations du laboratoire

Compression de Données - Algorithme de Huffman Document de Conception

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

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

Représentation d un entier en base b

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

Bases de données avancées

Algorithmique et Programmation, IMA

Cours d initiation à la programmation en C++ Johann Cuenin

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

Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 23/04/2007

Algorithmique I. Algorithmique I p.1/??

Cours de Programmation 2

Introduction à la programmation concurrente

Adama MBODJI MBODJ.SYSTEM

Le prototype de la fonction main()

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Java 1.5 : principales nouveautés

1 Recherche en table par balayage

Bases de Données Avancées PL/SQL

Compilation (INF 564)

Domain Name System ot ol F. N 1

Programmation avec des objets : Cours 7. Menu du jour

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

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Master IMEA 1 Calcul Stochastique et Finance Feuille de T.D. n o 1

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

Document Object Model (DOM)

Initiation à LabView : Les exemples d applications :

Plan du cours Cours théoriques. 29 septembre 2014

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Problèmes liés à la concurrence

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

Algorithmique et programmation : les bases (VBA) Corrigé

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

Domain Name Service (DNS)

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Présentation Windows Azure Hadoop Big Data - BI

Programme Compte bancaire (code)

Examen Médian - 1 heure 30

Langage SQL : créer et interroger une base


Cours Informatique Master STEP

Introduction au langage C

Transcription:

Chap. VII : arbres binaires 1. Introduction Arbre : collection d objets avec une structure hiérarchique Structure intrinsèque descendants d une personne (elle incluse) A ascendant connus d une personne (elle incluse) G B C D D E F E F G B C H I J A 1

Structure imposée pour les besoins de l application séquence de symboles 3 + (5 6) 4 + ensemble {0, 1, 3, 4, 5, 6, 7, 9} 5 3 3 7-4 0 4 6 9 Structure commune : 5 6 R 1 Définition Un élément en haut : racine de l arbre Des arbres sous la racine : sous-arbres 2

2. Terminologie A B C D E F G H I J nœud (assimilé à la valeur qu il contient) : 10 nœuds de A à J feuille : E, H, I, J, C, G nœud interne : A, B, D, F nœud fils d un nœud : B, C, D fils de A nœud père d un nœud : A père de B, C, D descendant d un nœud : E, F, H, I, J descendants de B ancêtre d un nœud : A, B, F ancêtres de H 3

... Terminologie A B C D E F G H I J chemin : séquence de nœuds d un nœud à un de ses descendants. Exemples : A B F ; D G branche : chemin de la racine à une feuille. Exemple : A B F I hauteur : maximum de la longueur des branches (ici 3) arbre dégénéré ou filiforme : chaque nœud a 0 ou 1 fils A B C D 4

3. Arbres binaires Chaque nœud a au plus 2 fils Exemple : ascendants (dessin retourné) A B C D E F G Les feuilles n ont pas de fils (sous-arbre) : D, G et F Les nœuds internes ont deux ou un fils (sous-arbres) A et C ont 2 fils (sous-arbres) : gauche et droit B a un fils (sous-arbre) droit E a un fils (sous-arbre) gauche 5

Arbres binaires particuliers Localement complet les nœuds internes ont 2 fils nb feuilles = nb nœuds + 1 Complet localement complet et branches de même longueur nb feuilles = 2 hauteur nb nœuds = 2 hauteur+1 1 ; hauteur = log 2 (nb nœuds) 6

Parfait : quasi complet Tous les niveaux sont remplis, sauf éventuellement le dernier Dernier niveau : nœuds tassés à gauche hauteur = log 2 (nb nœuds) arbres complets sans restriction sur le nombre de nœuds 7

4. Types Ada pour les arbres binaires Exemples : entiers dans les nœuds Cas particulier des arbres parfaits tableau, rangement par niveau A 1 2 3 4 5 6 B C A B C D E F D E F Si le premier indice (celui de la racine) est 1 : Fils du nœud d indice i : aux indices 2i et 2i + 1 Père du nœud d indice i : à l indice i/2 Inconvénient : nombre de nœuds doit être fixé (ou borné) 8

Cas général : utiliser des pointeurs Nœud : une valeur (entier) et deux sous-arbres article (Sous-)Arbre : un pointeur vers un nœud type Noeud; type Arbre is access Noeud; type Noeud is record Val : Integer; Gauche, Droit : Arbre; end record; Sous-arbre absent (feuille ou nœud à 1 fils) : null (Arbre vide) 2 4 5 2 4 5 6 1 7 6 1 7 8 8 9

5. Parcours d arbres Nœud le plus à gauche d un arbre non vide 2 4 5 C 8 6 9 1 7 function Noeud_Gauche (A : Arbre) return Arbre is C : Arbre := A; begin while C.Gauche /= null loop C := C.Gauche; end loop; return C; end Noeud_Gauche; 10

Feuille la plus à gauche d un arbre non vide G 4 8 6 9 7 3 2 5 1 7 function Feuille_Gauche (A : Arbre) return Arbre is G : Arbre := Noeud_Gauche (A); begin while G.Droit /= null loop G := Noeud_Gauche (G.Droit); end loop; return G; end Feuille_Gauche; On descend un chemin = algo itératif 11

Nombre de nœuds d un arbre function Nb_Noeuds (A : Arbre) return Natural is begin if A = null then --> arbre vide return 0; else --> arbre non vide return 1 + --> on compte le noeud Nb_Noeuds (A.Gauche) + --> son ss-arbre gauche Nb_Noeuds (A.Droit); --> son ss-arbre droit end if; end Nb_Noeuds; On parcourt (potentiellement) tout l arbre en traitant tout un sous-arbre avant de passer à l autre parcours en profondeur = algo récursif 12

Hauteur d un arbre non vide function Hauteur (A : Arbre) return Natural is begin if A.Gauche = null and A.Droit = null then return 0; else return 1 + Integer Max (Hauteur (A.Gauche), Hauteur (A.Droit)); end if; end Hauteur; Incorrect : un nœud interne peut avoir un de ses sous-arbres vide 13

Hauteur d un arbre non vide function Hauteur (A : Arbre) return Natural is begin if A.Gauche = null then if A.Droit = null then return 0; else return 1 + Hauteur (A.Droit); end if; elsif A.Droit = null then return 1 + Hauteur (A.Gauche); else return 1 + Integer Max (Hauteur (A.Gauche), Hauteur (A.Droit)); end if; end Hauteur; 14

Hauteur d un arbre function Hauteur (A : Arbre) return Integer is begin if A = null then return -1; else return 1 + Integer Max (Hauteur (A.Gauche), Hauteur (A.Droit)); end if; end Hauteur; si A est une feuille : h (A) = 1 + max (-1, -1) = 0 si A.Gauche est vide et A.Droit est non vide : h (A) = 1 + max (-1, h (A.Droit)) = 1 + h (A.Droit) Si A.Droit est vide et A.Gauche est non vide : h (A) = 1 + max (h (A.Gauche), -1) = 1 + h (A.Gauche) 15

Affichage préfixé (infixé, postfixé) + 2 préfixé : infixé : postfixé : + 2 4 7 2 + 4 7 2 4 7 + 4 7 procedure Afficher (A : in Arbre) is begin if A /= null then Put (A.Val); --> préfixé Afficher (A.Gauche); -- Put (A.Val); --> infixé Afficher (A.Droit); -- Put (A.Val); --> postfixé end if; end Afficher; 16