arbol y recursividad
Publicado por ivan (26 intervenciones) el 04/08/2023 16:46:54
Hola. Quiero saber como utilizar recursividad en este caso. Si alguien puede orientarme un poquito. Gracias. Tienes un árbol de descendencia de la siguiente forma:
https://i.stack.imgur.com/b7GJh.png
En este árbol Celestina y Julián son hijos de Eligio. Carmela y Rosendo son hijos de Celestina; y Fabián es hijo de Julián. Por último, José y Anastacia son hijos de Rosendo; y Berto, Fausto, Abel y Florina son hijos de Fabián. Carmela no tuvo descendencia.
La información del árbol fue guardada por generación en una tupla con el siguiente formato:
Esta tupla guarda la información de cada persona en dos elementos. El primero es un string con el nombre de la persona y el segundo es una lista de tuplas con todos sus hijos.
Define una función encontrar_padres(arbol, nombre) la cual recibe como parámetros un árbol de descendencia y un nombre. La función deberá retornar una lista con todos los padres de nombre en orden de ascendencia . Si nombre no está en el arbol deberá retornar False.
Algunos casos basados en el árbol de ejemplo:
encontrar_padres(descendencia,'Fausto')
deberá retornar: ['Fausto', 'Fabián', 'Julián', 'Eligio']
ya que Fabián es el padre de Fausto, Julián es el padre de Fabián y Eligio es el padre de Julián.
encontrar_padres(descendencia,'Celestina')
deberá retornar: ['Celestina', 'Eligio']
encontrar_padres(descendencia,'Jorge')
deberá retornar: False
Recomendamos fuertemente pensar de forma RECURSIVA este ejercicio en lugar de forma iterativa.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta clara
No me gusta: Está pregunta no esta clara o no es útil
0
https://i.stack.imgur.com/b7GJh.png
En este árbol Celestina y Julián son hijos de Eligio. Carmela y Rosendo son hijos de Celestina; y Fabián es hijo de Julián. Por último, José y Anastacia son hijos de Rosendo; y Berto, Fausto, Abel y Florina son hijos de Fabián. Carmela no tuvo descendencia.
La información del árbol fue guardada por generación en una tupla con el siguiente formato:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
descendencia = ('Eligio', [
('Celestina', [
('Carmela', []),
('Rosendo', [
('José', []),
('Anastacia', [])
])
]),
('Julián', [
('Fabián', [
('Berto', []),
('Fausto', []),
('Abel', []),
('Florina', [])
]),
])
])
Define una función encontrar_padres(arbol, nombre) la cual recibe como parámetros un árbol de descendencia y un nombre. La función deberá retornar una lista con todos los padres de nombre en orden de ascendencia . Si nombre no está en el arbol deberá retornar False.
Algunos casos basados en el árbol de ejemplo:
encontrar_padres(descendencia,'Fausto')
deberá retornar: ['Fausto', 'Fabián', 'Julián', 'Eligio']
ya que Fabián es el padre de Fausto, Julián es el padre de Fabián y Eligio es el padre de Julián.
encontrar_padres(descendencia,'Celestina')
deberá retornar: ['Celestina', 'Eligio']
encontrar_padres(descendencia,'Jorge')
deberá retornar: False
Recomendamos fuertemente pensar de forma RECURSIVA este ejercicio en lugar de forma iterativa.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta clara
No me gusta: Está pregunta no esta clara o no es útil
0
Valora esta pregunta


0