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を持つNodeを見つけてそのNodeを返すメソッドを作成できないようです. ノードが見つからない場合は、None が返されます。

4

2 に答える 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
于 2013-08-04T21:22:07.880 に答える
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
于 2013-08-04T21:21:55.467 に答える