Track
/
Python
Python
/
Esercizi
/
Costruzione di un albero
Costruzione di un albero

Costruzione di un albero

Facile

Istruzioni

Riorganizza un algoritmo di costruzione dell'albero.

Alcuni forum web hanno una struttura ad albero, quindi i post vengono presentati come un albero. Tuttavia, i post sono tipicamente memorizzati in un database come un insieme non ordinato di record. Quindi, quando si presentano i post all'utente, la struttura ad albero deve essere ricostruita.

Il tuo compito sarà riorganizzare un pezzo di codice funzionante ma lento e brutto che implementa la logica di costruzione dell'albero per record altamente astratti. I record contengono solo un numero ID e un numero ID del genitore. Il numero ID è sempre compreso tra 0 (incluso) e la lunghezza della lista di record (esclusa). Tutti i record hanno un ID del genitore inferiore al proprio ID, tranne il record radice, che ha un ID del genitore uguale al proprio ID.

Un esempio di albero:

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)

Messaggi di eccezione

A volte è necessario sollevare un'eccezione. Quando lo fai, dovresti sempre includere un messaggio di errore significativo per indicare qual è l'origine dell'errore. Questo rende il codice più leggibile e aiuta notevolmente nel debug. Nei casi in cui sai che l'origine dell'errore sarà di un certo tipo, puoi scegliere di sollevare uno dei tipi di errore predefiniti, ma dovresti comunque includere un messaggio significativo.

Questo particolare esercizio richiede che tu riorganizzi come e dove viene usata l'istruzione raise per «lanciare» un ValueError in caso di input dell'albero non valido. I test passeranno solo se il codice usa raise per sollevare l'exception appropriata e include anche un messaggio appropriato.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Python Exercism

Vuoi iniziare Costruzione di un albero?

Iscriviti a Exercism per imparare e padroneggiare Python con 17 concetti146 esercizi e il mentoring di persone reali, tutto gratis.