我在正确处理树时遇到问题。树很简单,只是一个节点和子列表
class Tree (object):
__slots__ = "node","children"
def __init__(self,node,children=[]):
self.node = node
self.children = children
但是,使用线性化技术,我们应该检测给定分支结束了多少(子)树。例如,如果我们像这样构造一棵树:
t = Tree(1, [Tree(2, [Tree(5), Tree(3, [Tree(4)])])])
那么t.linearize()
应该输出1 2 5 NIL 3 4 NIL NIL NIL NIL
. 每个NIL
代表 1 个(子)树正在结束。
我当前的版本只输出以下内容:1 2 5 NIL 3 4 NIL
,没有多个NIL
s。知道我遗漏了什么吗?
def linearize(self):
print self.node,
if self.children == []:
print "NIL",
for child in self.children:
child.linearize()