Adloun

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.

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.