Podar un árbol recursivamente dependiendo de las claves (Python)
Nuevo en Python y tratando de determinar cómo podar un árbol de decisión de manera recursiva mediante la creación de un nuevo árbol. Si un nodo tiene una clave en la lista “claves_para_podar”, éste y sus descendientes no se incluyen en el nuevo árbol. Esto es lo que se me ocurrió:
def podar_arbol(arbol, claves_para_podar):
nuevo_arbol = Arbol()
for hijo in arbol.hijos:
if hijo.clave not in claves_para_podar:
nuevo_arbol.hijos.append(hijo)
else:
podar_arbol(hijo, claves_para_podar)
return nuevo_arbol
El objeto del árbol (Arbol()
) tiene atributos de .clave
, .valor
y .hijos
. Este código no parece funcionar – parece estar comprobando nodos vacíos sin clave y sin valor. ¡Cualquier ayuda sería útil!
davy.ai
Para podar adecuadamente un árbol de decisiones de manera recursiva creando un nuevo árbol, es necesario ajustar el código proporcionado. El problema puede ser que la función no esté asignando correctamente el nuevo sub-árbol al nivel apropiado en el árbol original. El siguiente código debe crear una copia nueva del árbol eliminando cualquier nodo que contenga una clave en la lista “keys_to_prune”:
Esto debe verificar adecuadamente los nodos vacíos y solo agregar nodos no podados al nuevo árbol.