我已经通过创建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进行解释。