如何用Python遍历二叉决策树?

1 投票
2 回答
3340 浏览
提问于 2025-04-15 23:10

如何用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

撰写回答