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

3
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

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

2个回答

2

你正在从子元素中搜索parent,而你应该搜索x

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

0

我认为立即解决的方法是更改这个

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

变成这样

    for node in self.children:
        res = node.find(person)
        if res is not None:
            return res

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接