Adloun

Sérialiser à la main, et compter les jetons

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 12 — Tableaux associatifs, hachage et sérialisation

Énoncé

Soit l'arbre de racine , dont le fils gauche est — lui-même de fils gauche et sans fils droit — et dont le fils droit est , une feuille.

Corrigé

1. On applique la définition : un nœud donne son étiquette, puis son fils gauche, puis son fils droit ; un sous-arbre vide donne #.


5 3 1 # # # 8 # #

Détail de la lecture : 5, puis le sous-arbre gauche 3 1 # # # — c'est-à-dire , son fils gauche 1 # #, et son fils droit # —, puis le sous-arbre droit 8 # #. Mesuré par aller-retour : la désérialisation de cette chaîne redonne l'arbre de départ.

2. Un arbre à nœuds a exactement jetons : étiquettes et marqueurs #. Ici : , et l'on compte bien jetons.

Démonstration, par induction structurelle. Pour : et un seul jeton, . Pour de tailles et : par hypothèse d'induction les deux sous-arbres donnent et jetons, auxquels s'ajoute l'étiquette, soit

Vérifié par programme sur arbres tirés au hasard.

Une autre lecture du même comptage : un arbre binaire à nœuds a exactement « places vides » — c'est le nombre de sous-arbres vides —, résultat déjà vrai au chapitre chap:arbres et qu'on retrouve ici comme un sous-produit du format.

3. Oui, les deux sont indispensables, et pour deux raisons différentes.

Le # n'est pas un remplissage : c'est le seul endroit du format où la forme de l'arbre est écrite. Les étiquettes, elles, ne portent que le contenu.

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.