You are on page 1of 7

Gnralits En informatique, un arbre est une structure de donnes rcursive gnrale, reprsentant un arbre au sens mathmatique.

C'est un cas particulier de graphe qui n'a qu'une seule source et aucun cycle. Dans un arbre, on distingue deux catgories d'lments : les feuilles, lments ne possdant pas de fils dans l'arbre ! les n"uds internes, lments possdant des fils #sous$branches%. &a racine de l'arbre est le n"ud ne possdant pas de parent. &a hauteur d'un arbre est la longueur du plus grand chemin de la racine ' une feuille. Chaque n"ud poss(de une tiquette, qui est en quelque sorte le ) contenu * de l'arbre. &'tiquette peut +tre tr(s simple: un nombre entier, par exemple. Elle peut galement +tre aussi complexe que l'on veut : un ob,et, une instance d'une structure de donnes, un pointeur, etc. -l est presque tou,ours obligatoire de pouvoir comparer les tiquettes selon une relation d'ordre total, afin d'implanter les algorithmes sur les arbres.

.ar exemple, les rpertoires sous la plupart des syst(mes d'exploitation actuels #/icrosoft 0indo1s, 2nix dont &inux et /ac 34 5 ...% forment un arbre. &es arbres sont en fait rarement utiliss en tant que tels, mais de nombreux types d'arbres avec une structure plus restrictive existent et sont couramment utiliss en algorithmique, notamment pour grer des bases de donnes, ou pour l'indexation de fichiers. -ls permettent alors des recherches rapides et efficaces. 6ous vous en donnons ici les principaux exemples : &es arbres binaires dont chaque n"ud a au plus deux fils : ils sont en fait utiliss sous forme d'arbres binaires de recherche, de tas, d'78&, ou encore d'arbres rouge$noir. &es deux derniers exemples sont des cas particuliers d'arbres balancs, c'est$'$dire d'arbres dont les sous$branches ont environ la m+me hauteur. &es arbres n$aires qui sont une gnralisation des arbres binaires : chaque n"ud a au plus n fils. &es arbres 9$:$; et les arbres < en sont des exemples d'utilisation et sont eux aussi des arbres balancs. Arbres 2n arbre est un ensemble de n"uds #appels aussi parfois sommets% relis par des ar+tes tel que chaque n"ud #' part la racine qui en a =% ait exactement une ar+te pointant vers lui. &a racine est donc un n"ud particulier puisqu'il n'a pas de prdcesseur. &es feuilles sont les n"uds sans successeurs.

Arbres binaires 2n arbre binaire est un arbre tel que chaque n"ud a au plus deux fils #ou successeurs%. -l peut donc se reprsenter ' l'aide de la structure suivante:

Encore une fois, cette organisation est purement virtuelle. &'arbre suivant :

est peut$+tre stoc> ainsi en mmoire...

Reprsentations dun arbre binaire: &es arbres binaires peuvent +tre construits ' partir de primitives d'un langage de programmation de diffrentes mani(res. Dans un langage avec structures et pointeurs #ou rfrences%, les arbres binaires peuvent +tre con?us en ayant une structure ' trois n"uds qui contiennent quelques donnes et pointeurs vers son fils droit et son fils gauche. &'ordre que cela impose aux n"uds enfants est parfois utile, en particulier pour les parcours infixes. .arfois, il contient galement un pointeur vers son unique parent. 4i un n"ud poss(de moins de deux fils, l'un des deux pointeurs peut +tre

affect de la valeur spciale nulle ! il peut galement pointer vers un n"ud sentinelle. Dans le cas du langage C : struct cellule @ int val ! struct cellule gch ! struct cellule drt! A! Oprations lmentaires sur les arbres binaires : .arcours prfixe, infixe et postfixe #.arfois appels pr$ordre, in$ordre et post$ordre% 4oit une structure 7rbre dont la racine est 7 et une rfrence gauche et droite ' ses deux fils. 6ous pouvons crire les fonctions suivantes : .arcours prfixe 8isiter.rfixe#7rbre 7% @ 8isiter#7% 4i 6onB8ide#gauche#7%% 8isiter.rfixe#gauche#7%% 4i 6onB8ide#droite#7%% 8isiter.rfixe#droite#7%% A

Ceci affiche les valeurs de l'arbre en ordre prfixe. Dans cet ordre, chaque n"ud est visit ainsi que chacun de ses fils. .arcours postfixe 8isiter.ostfixe#7rbre 7% @ 4i 6onB8ide#gauche#7%% 8isiter.ostfixe#gauche#7%% 4i 6onB8ide#droite#7%% 8isiter.ostfixe#droite#7%% 8isiter#7% A Dans un parcours postfixe, on affiche chaque n"ud apr(s avoir affich chacun de ses fils. .arcours infixe 8isiter-nfixe#7rbre 7% @ 4i 6onB8ide#gauche#7%% 8isiter-nfixe#gauche#7%% 8isiter#7% 4i 6onB8ide#droite#7%% 8isiter-nfixe#droite#7%% A 2n parcours infixe, comme ci$dessus, visite chaque n"ud entre les n"uds de son sous$arbre de gauche et les n"uds de son sous$arbre de droite. C'est une mani(re

asseC commune de parcourir un arbre binaire de recherche, car il donne les valeurs dans l'ordre croissant. .our comprendre pourquoi cela est le cas, notons que si n est un n"ud dans un arbre binaire de recherche, alors tous les lments dans le sous$arbre de gauche du n"ud n seront infrieurs ' n et ceux dans le sous$arbre de droite seront suprieurs ou gaux ' n. 7insi, si nous visitons le sous$arbre de gauche dans l'ordre, de mani(re rcursive, puis que nous visitons n, et que nous visitons le sous$arbre de droite, nous aurons visit l'ensemble du sous$arbre enracin en n dans l'ordre. 2n exemple simple d'arbre binaire Dans cet arbre binaire, Dendu du parcours prfixe : E, 9, ;, F, G, H, :, I, J Dendu du parcours postfixe : ;, G, H, F, 9, J, I, :, E Dendu du parcours infixe : ;, 9, G, F, H, E, :, J, I

You might also like