python развернуть дерево из верхнего узла и дать листовые узлы - PullRequest
0 голосов
/ 01 апреля 2020

У меня проблема с древовидной структурой. Моя цель, начиная с самого верхнего узла, расширить каждый родительский узел, при условии, что родительский узел соответствует заданному условию, которое является одинаковым для всех узлов. Я знаю максимальную потенциальную глубину дерева (чтобы избежать бесконечных затрат)

Я хочу иметь возможность получить все листовые узлы (которые не были расширены). Для каждого родительского узла я могу получить все дочерние узлы.

Я ищу наилучшую структуру для этой проблемы.

Это то, что я до сих пор придумал, используя рекурсивную функцию:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...