Exercices sur les structures arborescentes - 5, Exercices de Informations et informatique
Christophe
Christophe3 mars 2014

Exercices sur les structures arborescentes - 5, Exercices de Informations et informatique

PDF (1 MB)
2 pages
807Numéro de visites
Description
Exercices d’informatique sur les structures arborescentes - 5. Les principaux thèmes abordés sont les suivants: exercices.
20points
Points de téléchargement necessaire pour télécharger
ce document
Télécharger le document
Aperçu2 pages / 2
Télécharger le document

EI\SEIRB - Première Année Filière Informatique Année 2009-2010

Structures arborescentes

Durée : 2h. Notes de cours et de TD autorisées.

La complexité en temps (resp. espace) désigne la complexité en temps (resp. espace) dans le pire des cas. Le nombre de noeuds d'un arbre est désigné par nbreNoeuds(T) ou si il n'y a pas d'ambiguité par I'entier n. La hauteur de T par h(T).

Exercice I Dessiner I'arbre binaire de recherche (ABR) obtenu en insérant successivement dans cet ordre à part ir d'un arbrevide les entiers 6,3, 1, 2,5,8 ,7.

Exercice 2 Fournir les séquences préfixe, infixe, suffixe de I'arbre :

t

6

Exercice 3 Soit ? un arbre binaire et i un entier. La couche de profondeur i, de ? est

la séquence des noeuds à distance z de la racine placés de gauche à droite. Dans une telle

séquence "couche", un noeud gt successeur de r est appelé cousin de r. Ainsi, tout noeud a

au plus un cousin et le fils droit E d'un fils gauche r d'un même père eqt son cousin (si les

deux existent). La largeur de I'a,rbre est Ia longueur maximale des différentes couches de ?.

Exemple 1 Dans I'arbre de l'ererc'ice précédent, les couches de profondeur 0, 1,.2,3 et 4

sont respect ' iuement les séquencçs (0), (7,2), (3,4,5), (6,7) et 0. l " noeud,3 a pour cous' in

4, qui, a pour cousin 5, qui, n'a pas de cous'in. La largeur de l'arbre est ai'nsi' 3.

1. Dessiner un arbre binaire où aucun noeud ne possède de cousin.

2. Dessiner un arbre binaire où Ie nombre de noeuds sans cousin est exactement À,(7)+1 :

3 (la hauteur d'un arbre à un seul sommet est nulle).

3. Fournir une représentation courante des arbres pour laquelle le calcul de la largeur

est réalisé selon un algorithme de complexité en temps linéaire et en espace constant.

Illustrer votre propos par un exemple d'arbre et sa représentation.

4. Ecrire I'algorithme évoqué ci-dessus.

Nous supposons dorénavant que I'arbre est représenté par chainage. Nous disposons

ainsi des fonctions noeudRacine Arbre-) noeud, fil-sGauche noeud -) noeud,

admetFilsGauche : noeud -> booléen, estSentinelle, etc.

5. Ecrire un algorithme récursif de complexité en temps linéaire qui calcule sa largeur.

docsity.com

6. Evaluer la complexité en espace de votre algorithme.

Nous supposons que le type noeud possède un nouveau chainage (autre que filsGauche et filsDroit) appelé noeudCousin. Pour tout arbre binaire ? (les chainages noeudCousin seront supposés initialement dans un état quelconque), nous appelons l'arbre à cous'ins deT l'arbre où les chainages filsGauche et filsDroit ne sont pas modifiés mais où chaque noeud a pour noeudCousin son cousin. Le problème est ainsi :

arbreACousins E : un arbre binaire T S : l 'arbre a cousin de T

7. Dessiner la représentation de l'arbre de l'exemple ci-dessous à I'aide de noeuds en ditinguant par des flêches en pointillé le chainage noeudCousin. A gauche de votre dessin sera représenté une représentation de I'arbre initial, à droite celle de son arbre à cousin. Les noeuds seront dessinés à l'aide de cercles.

8. Ecrire un algorithme récursif linéaire qui transforme un arbre binaire en son arbre à cousin. Vous supposerez ne pas disposer d'un chainage père.

9. Evaluer la complexité en espace en distinguant celle due à la pile d'appel-

10. Fournir une définition récursive de la relation cousin en utilisant Ia notion de père.

11. En déduire un algorithme de complexité en temps linéaire et en espace constant (hors pile d'appel) résolvant arbreACousins. Vous supposerez ici disposer d'un chainage noeudPère qui permet d'accéder en temps constant au père de tout noeud.

12. Ecrire un algorithme qui décide si un arbre est un arbre à cousin. L'algorithme sera de complexité en temps linéaire, de compléxité en espace la hauteur de I'arbre et ne modifiera pas I'arbre. Vous supposez disposer d'un chainage noeudPère.

13. Même question que celle précédente sans disposer d'un chainage noeudPère.

14. Ecrire un algorithme de complexité en temps la hautenr* de I'arbre et en espace constant (hors eventuelle pile d'appel) qui transforme un arbre à cousins en un arbre ou chaque noeud dernier de la couche de profondeur i est lié par le chainage noeudCousin au premier noeud de la couche de profondeur i * 1 ou une à sentinelle si cette couche est vide.

15. Dans I'arbre issue de la transformation précédente, écrire un parcours en largeur. Eva- luer sa complexité en temps et en espace.

16. Ecrire un algorithme de complexité en temps O(h(?)) qui permet d'insérer un élément dans un arbre binaire de recherche à cousins (et maintenir un ABR à cousins). (Conseil : illustrer votre propos sur un exemple; utiliser des fonctions auxiliaires appropriées !).

17. Proposer une modification de la structure noeud de façon à simplifier I'algorithme précédent; écrire cet algorithme.

docsity.com

commentaires (0)
Aucun commentaire n'a été pas fait
Écrire ton premier commentaire
Télécharger le document