@ TheMachineCharmer прав: рекурсивность - это ключевое слово здесь!
Я бы добавил к милой функции, данной @TheMachineCharmer, небольшое возвращение (тривиальный случай, когда ответ не является ни левым, ни правым)
def walk(node):
answer = ask(node.question)
if answer == left:
walk(node.left_tree)
else:
walk(node.right_tree)
return answer
Таким образом, если узел содержит РЕАЛЬНЫЙ ответ , он вернет его.