Parcours
/
Python
Python
/
Exercices
/
Construction d'un arbre
Construction d'un arbre

Construction d'un arbre

Facile

Instructions

Réécris un algorithme de construction d'arbre.

Certains forums web ont une disposition en arbre, c'est pourquoi les messages y sont présentés sous forme d'arbre. Cependant, les messages sont généralement stockés dans une base de données sous la forme d'un ensemble d'enregistrements non triés. Ainsi, lorsqu'on présente les messages à l'utilisateur, il faut reconstruire la structure en arbre.

Ton travail consistera à réécrire un bout de code qui fonctionne, mais qui est lent et brouillon, et qui implémente la logique de construction d'arbre pour des enregistrements très abstraits. Les enregistrements ne contiennent qu'un identifiant et un identifiant de parent. L'identifiant est toujours compris entre 0 (inclus) et la longueur de la liste d'enregistrements (exclue). Tous les enregistrements ont un identifiant de parent inférieur à leur propre identifiant, sauf l'enregistrement racine, dont l'identifiant de parent est égal à son propre identifiant.

Un exemple d'arbre :

root (ID: 0, parent ID: 0)
|-- child1 (ID: 1, parent ID: 0)
|    |-- grandchild1 (ID: 2, parent ID: 1)
|    +-- grandchild2 (ID: 4, parent ID: 1)
+-- child2 (ID: 3, parent ID: 0)
|    +-- grandchild3 (ID: 6, parent ID: 3)
+-- child3 (ID: 5, parent ID: 0)

Messages d'exception

Il est parfois nécessaire de lever une exception. Dans ce cas, tu dois toujours inclure un message d'erreur explicite pour indiquer l'origine de l'erreur. Cela rend le code plus lisible et facilite grandement le débogage. Si tu sais que l'erreur sera d'un type donné, tu peux choisir de lever l'un des types d'erreur intégrés, mais tu dois tout de même y joindre un message explicite.

Cet exercice en particulier te demande de réécrire la manière dont l'instruction raise est utilisée, et à quel endroit, pour « lever » un ValueError lorsque l'arbre fourni en entrée n'est pas valide. Les tests ne réussiront que si le code lève l'exception appropriée et y joint un message approprié.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Python Exercism

Prêt à commencer Construction d'un arbre ?

Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.