У меня проблема с древовидной структурой. Моя цель, начиная с самого верхнего узла, расширить каждый родительский узел, при условии, что родительский узел соответствует заданному условию, которое является одинаковым для всех узлов. Я знаю максимальную потенциальную глубину дерева (чтобы избежать бесконечных затрат)
Я хочу иметь возможность получить все листовые узлы (которые не были расширены). Для каждого родительского узла я могу получить все дочерние узлы.
Я ищу наилучшую структуру для этой проблемы.
Это то, что я до сих пор придумал, используя рекурсивную функцию:
def get_child_nodes(parent_node):
# function that builds all child node given a parent node
return child_nodes #list of child_nodes
def comply_with_condition(node)
""" returns true/false if node complies with condition """
return compliance_boolean
def recursive_search(node, current_node_depth, maximum_tree_depth):
if current_node_depth< maximum_tree_depth:
child_nodes = get_child_nodes(node)
for c in child_nodes:
if comply_with_condition(c): #we want to include this node in the final returned output
yield c
else: #expand that node too
next_depth = current_node_depth+1
recursive_search(c, next_depth, maximum_tree_depth)
else:
yield node