Python - arbol y recursividad

 
Vista:

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:

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', [])
                                    ]),
                            ])
    ])
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

arbol y recursividad

Publicado por Francisco Javier (313 intervenciones) el 06/08/2023 21:35:55
1
2
3
4
5
6
7
8
9
10
11
def encontrar_padres(arbol, nombre):
    if not arbol:
        return False
    name, hijos = arbol
    if name == nombre:
        return [nombre]
    for hijo in hijos:
        solution = encontrar_padres(hijo, nombre)
        if solution:
            return [name] + solution
    return False
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

arbol y recursividad

Publicado por ivan (26 intervenciones) el 08/08/2023 05:46:22
Hola . Muchas Gracias por la ayuda. Claramente funciona. No se me ocurrió el name, hijos = arbol.
Lo hacer parecer fácil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

arbol y recursividad

Publicado por ivan (26 intervenciones) el 09/08/2023 01:29:30
Podes recomendarme como formarme en python .Algunos pasos básicos a tomar. Es que cursos y libros hay varios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

arbol y recursividad

Publicado por Francisco Javier (313 intervenciones) el 09/08/2023 09:25:01
Hay muchos cursosbgratuitos de python comob3lbde pildoras informaticas. Lee la documentacion y ejercicios . Muchos ejercicios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

arbol y recursividad

Publicado por Felipe (1 intervención) el 14/02/2024 04:12:59
Hola amigo.

una consulta: ¿Que hace la condición "if solution:"? ¿que es lo que quieres validar con esa condición?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar