【发布时间】:2015-10-15 10:30:22
【问题描述】:
我需要一个 Python 中的树形数据结构,我从网站上复制了它,但遇到了一些非常奇怪的问题。
如果你创建一个带有两个参数的对象,它会起作用,如果你只使用一个参数,它会在打印时失败
RecursionError: 获得最大递归深度 列表的代表
我了解错误,但不清楚它发生在哪里以及为什么会发生。代码也应该使用默认参数工作。我知道它是可变的。
class node(object):
def __init__(self, value, children = []):
self.value = value
self.children = children
def __repr__(self, level=0):
ret = "\t"*level+repr(self.value)+"\n"
for child in self.children:
ret += child.__repr__(level+1)
return ret
def add(self, value):
self.children.append(node(value))
#tree = node([1,4,3], [node([2,5,3])]) <-- works
tree = node([1,4,3]) # <-- fails
tree.add([3,4,3])
tree.add([4,4,3])
print(tree)
【问题讨论】:
-
尝试将
self.children = children更改为self.children = children[:]
标签: python