Tracks
/
Python
Python
/
Ejercicios
/
Construcción de árboles
Construcción de árboles

Construcción de árboles

Fácil

Instrucciones

Refactoriza un algoritmo de construcción de árboles.

Algunos foros web tienen un diseño en árbol, así que las publicaciones se presentan como un árbol. Sin embargo, las publicaciones normalmente se guardan en una base de datos como un conjunto de registros sin ordenar. Por eso, al mostrar las publicaciones al usuario, hay que reconstruir la estructura de árbol.

Tu tarea será refactorizar un fragmento de código que funciona, pero que es lento y feo, y que implementa la lógica de construcción de árboles para registros altamente abstraídos. Los registros solo contienen un número de ID y un número de ID del padre. El número de ID siempre está entre 0 (incluido) y la longitud de la lista de registros (excluida). Todos los registros tienen un ID del padre menor que su propio ID, excepto el registro raíz, cuyo ID del padre es igual a su propio ID.

Un ejemplo de árbol:

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)

Mensajes de excepción

A veces es necesario lanzar una excepción. Cuando lo hagas, siempre debes incluir un mensaje de error significativo que indique cuál es el origen del error. Esto hace que tu código sea más legible y ayuda mucho a la hora de depurar. En situaciones en las que sabes que el origen del error será de un tipo determinado, puedes optar por lanzar uno de los tipos de error integrados, pero aun así debes incluir un mensaje significativo.

Este ejercicio en particular requiere que refactorices cómo y dónde se usa la sentencia raise para «lanzar» un ValueError cuando la entrada del árbol no es válida. Los tests solo pasarán si el código lanza la exception adecuada mediante raise e incluye un mensaje apropiado con ella.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Python Exercism

¿Todo listo para empezar Construcción de árboles?

Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.