ツリーを正しく処理することに問題があります。ツリーは単純で、ノードと子のリストだけです
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()