• Aucun résultat trouvé

Arbres binaires

N/A
N/A
Protected

Academic year: 2022

Partager "Arbres binaires"

Copied!
1
0
0

Texte intégral

(1)

Travaux pratiques option informatique

Exercices de révision (2)

Arbres binaires

Pour représenter un arbre binaire étiqueté par le type’ a, on définit le type : type ’a btree = Nil | Node of ’a * ’a btree * ’a btree ;;

Exercice 1.

Rédiger les fonctions suivantes :

size, de type’ a btree −> int, retourne le nombre de nœuds d’un arbre ;

leaf, de type’ a btree −> int, retourne le nombre de feuilles d’un arbre, c’est-à-dire le nombre de nœuds dont les deux fils sont égaux àNil;

member, de type’ a−> ’ a btree −> bool, détermine si l’un des nœuds de l’arbre possède une étiquette donnée ; – height, de type’ a btree −> int, calcule la hauteur d’un arbre (on convient que la hauteur deNilest−1).

Exercice 2.

Rédiger une fonctiontagqui retourne la liste des étiquettes portées par les nœuds d’un arbre parcouru par ordre préfixe (respectivement infixe, suffixe).

t a g : ’ a b t r e e −> ’ a l i s t

Exercice 3. (fonctionnelles sur les arbres)

Rédiger une fonctionmap_treeéquivalente à la fonctionmap, mais s’appliquant à des arbres binaires.

map_tree : ( ’ a −> ’ b ) −> ’ a b t r e e −> ’ b b t r e e

Rédiger de même une fonctionfold_treeéquivalente àlist_itpour les arbres binaires.

f o l d _ t r e e : ( ’ a −> ’ b −> ’ b −> ’ b ) −> ’ a b t r e e −> ’ b −> ’ b

Utiliser la fonctionfold_treepour redéfinir les fonctionssize,height,tag.

Exercice 4.

Un arbre binaire est ditsymétriquelorsqu’il est égal àNilou lorsque son fils gauche est l’image miroir de son fils droit.

Rédiger une fonctionsymmetricqui détermine si un arbre binaire est symétrique.

s y m m e t r i c : ’ a b t r e e −> b o o l

Arbres n-aires

Pour représenter un arbre dans lequel chaque nœud peut avoir un nombre arbitraire de fils, on définit le type : type ’a ntree = Nil | Node of ’a * (’a ntree list) ;;

Exercice 5.

Rédiger les fonctions suivantes :

size, de type’ a ntree −> int, retourne le nombre de nœuds d’un arbre ;

member, de type’ a−> ’ a ntree −> bool, détermine si l’un des nœuds de l’arbre possède une étiquette donnée ; – height, de type’ a ntree −> int, calcule la hauteur d’un arbre ;

sum, de typeint ntree −> int, calcule la somme des valeurs des étiquettes de cet arbre.

Il pourra être judicieux d’utiliser les fonctionnelles sur les listes pour répondre à ces questions.

page 1

Références

Documents relatifs

il reste deux sous arbres ; on enlève la plus petite étiquette x du sous arbre droit, qu'on place comme nouvelle racine. Il reste à trouver x et à l'enlever ; pour enlever la

– Un arbre binaire A est un arbre binaire de recherche si, pour tout nœud N de A, les contenus des nœuds du sous-arbre gauche de N sont strictement inférieurs au contenu de N, et

Pour obtenir un arbre équilibré (gauche, droite), il faut choisir la ville qui va constituer la racine celle qui a un rang de 100. Précisez pourquoi il est nécessaire que la

La profondeur du nœud ou d’une feuille d’un arbre hétérogène est le nombre d’arêtes du plus court chemin reliant ce nœud ou cette feuille à la racineB. On supposera que β ne contient

En informatique, un arbre binaire est une structure de données qui peut se représenter sous la forme d'une hiérarchie dont chaque élément est appelé nœud, le nœud

Un arbre de d´ ecision repr´ esente les comparaisons (` a l’exclusion de toute autre op´ eration) effectu´ ees par un algorithme de tri lorsqu’il traite une entr´ ee de taille

La longueur d’un chemin de la racine ` a une feuille dans l’arbre de d´ ecision est ´ egale au nombre de comparaisons n´ ecessaires au tri pour parvenir ` a la r´ eponse

Exercice 10: Appliquez l’algorithme de recherche d’une cl´ e dans un arbre binaire de recherche sur l’arbre pr´ ec´ edent. On prendra k