informatique (MP2I/MPI) · Chapitre 12 · Application directe du cours
Sérialiser à la main, et compter les jetons
Tableaux associatifs, hachage et sérialisation · niveau 2
É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.
- Donner sa sérialisation préfixe avec vides marqués.
- Combien de jetons pour un arbre à nœuds ? Le démontrer.
- Le mot
#est-il indispensable dans les deux positions ?
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
#du fils droit de distingue « est le fils gauche de » de « est son fils droit ». Mesuré : sans marqueurs, l'arbre avec à gauche et l'arbre avec à droite donnent tous deux la même écriture8 3. Avec marqueurs :8 3 # # #contre8 # 3 # #. - Les
#des feuilles marquent la fin de la descente ; sans eux, rien ne dirait quand un sous-arbre se termine, et la lecture ne pourrait pas savoir à qui rattacher le jeton suivant.
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.