пройти через двоичное дерево решений, используя python? - PullRequest
0 голосов
/ 26 мая 2010

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

Ответы [ 2 ]

1 голос
/ 26 мая 2010
def walk(node):
    answer = ask(node.question)
    if answer == left:
        walk(node.left_tree)
    else:
        walk(node.right_tree)

def ask(question):
       # get answer somehow
       # depending on the answer choose which subtree to traverse
       return answer
0 голосов
/ 26 мая 2010

@ TheMachineCharmer прав: рекурсивность - это ключевое слово здесь!

Я бы добавил к милой функции, данной @TheMachineCharmer, небольшое возвращение (тривиальный случай, когда ответ не является ни левым, ни правым)

def walk(node):
    answer = ask(node.question)
    if answer == left:
        walk(node.left_tree)
    else:
        walk(node.right_tree)
    return answer

Таким образом, если узел содержит РЕАЛЬНЫЙ ответ , он вернет его.

...