在python中使用递归查找树中的节点

在python中使用递归查找树中的节点,python,recursion,tree,Python,Recursion,Tree,我真的被卡住了,我似乎无法在我的Node类中创建一个方法来查找包含数据x的节点并返回该节点。如果没有找到节点,它将返回None 我认为立即的解决办法是改变这一点 class Node: def __init__(self, tree, data, parent=None): self.data = data self.parent = parent self.children = [] self.tree = tre

我真的被卡住了,我似乎无法在我的Node类中创建一个方法来查找包含数据x的节点并返回该节点。如果没有找到节点,它将返回None

我认为立即的解决办法是改变这一点

class Node:
    def __init__(self, tree, data, parent=None):

        self.data = data
        self.parent = parent
        self.children = []   
        self.tree = tree

     def find(self, x):

        if self.data is x:
            return self
        elif self.children:
            for node in self.children:
                return node.find(person)
        else:
            return None
对此

    for node in self.children:
        return node.find(person)

您正在儿童中搜索
parent
,而您应该搜索
x

    for node in self.children:
        res = node.find(person)
        if res is not None:
            return res
class Node():
    def __init__(self, tree, data, parent=None):
        self.data = data
        self.parent = parent
        self.children = []   
        self.tree = tree

    def find(self, x):
        if self.data is x: return self
        for node in self.children:
            n = node.find(x)
            if n: return n
        return None


>>> n = Node(None, 1)
>>> n.children = [Node(None, 2), Node(None, 3)]
>>> print n.find(3).data
3