L'arbre complet dans un tableau
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 10 — Arbres
Énoncé
Le tableau [8; 3; 9; 1; 6; 7; 5; 4] représente un arbre complet.
- Dessiner l'arbre. Quelle est sa hauteur ?
- Donner le père et les fils de chaque indice.
- Quel parcours de l'arbre redonne l'ordre du tableau ?
Corrigé
1 et 2. Les fils de l'indice sont et , son père . Table calculée :
| indice | ||||||||
|---|---|---|---|---|---|---|---|---|
| étiquette | ||||||||
| père | --- | |||||||
| fils gauche | --- | --- | --- | --- | ||||
| fils droit | --- | --- | --- | --- | --- |
La hauteur mesurée vaut . C'est le cas général : un arbre complet à nœuds a pour hauteur , ce qu'on a vérifié pour — hauteurs .
3. Le parcours en largeur. Mesure : le parcours en largeur de cet arbre donne , c'est-à-dire exactement l'ordre du tableau. Ce n'est pas une coïncidence : la représentation par tableau est le parcours en largeur, écrit une fois pour toutes.
Pourquoi. Le parcours en largeur visite le niveau , puis le niveau de gauche à droite, etc. La représentation par tableau range le niveau aux indices à , dans le même ordre. Les deux énumérations coïncident donc terme à terme.
Le parcours infixe, lui, donne : il n'a aucun rapport avec l'ordre du tableau.
Ce que cette représentation coûte et rapporte. Elle supprime les pointeurs — deux mots de octets par nœud sur une machine bits, contre zéro ici — et rend la mémoire contiguë, donc lue plus vite. Le prix est qu'elle n'est correcte que pour un arbre complet : sur l'arbre de l'exercice 10.1, où le niveau n'est pas plein, il faudrait laisser des trous, et un peigne de nœuds occuperait cases. C'est un cas où la structure de données impose une contrainte sur la forme, et le chapitre chap:tas montrera qu'un tas est précisément conçu pour la respecter.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.