我已经通过创建Node对象在python中创建了通用树。每个节点可以具有0、1或2个树。

我正在尝试创建一种方法来打印树中所有节点的列表。列表不必按顺序排列。这是我的简单尝试:

def allChildren(self, l = list()):
    l.append(self)
    for child in self.children:
        l = child.allChildren(l)
    return l


第一次运行此方法时,它可以正常工作。但是,由于某种原因,它正在存储以前的运行。第二次运行该方法时,它将所有节点打印两次。即使我创建2棵单独的树,它仍然会记住以前的运行。例如:我创建了2棵树,a和b。如果我运行a.allChildren(),我会收到正确的结果。然后,我运行b.allChildren()并接收a的所有节点和b的所有节点。

最佳答案

尝试这个:

def allChildren(self, l = None):
    if(l==None):
        l = list()

    l.append(self)
    for child in self.children:
        l = child.allChildren(l)
    return l


并查看this answer进行解释。

10-07 13:30