如何用Python遍历二叉决策树?
如何用Python语言遍历一个二叉决策树。给定一棵树,我想知道如何从根节点走到需要的叶子节点。所需叶子的特征以字典的形式给出,我们需要从根节点开始遍历,每到一个节点就根据特征列表中的信息回答问题。决策树的节点格式是((问题)(左子树)(右子树))。在遍历时,我们应该在每个节点回答问题,然后选择左边或右边的树,直到到达叶子节点。
2 个回答
0
@TheMachineCharmer 说得对:递归是这里的 关键!
我想在 @TheMachineCharmer 提供的好函数上加一点小改动,处理一个简单的情况,也就是答案既不在左边也不在右边的情况。
def walk(node):
answer = ask(node.question)
if answer == left:
walk(node.left_tree)
else:
walk(node.right_tree)
return answer
这样,如果这个节点里有 真正的答案,它就会返回这个答案。
2
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