0

ツリーを正しく処理することに問題があります。ツリーは単純で、ノードと子のリストだけです

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()
4

1 に答える 1

1

本当に欲しいIIUC:

def linearize(self):
    print self.node,
    for child in self.children:
        child.linearize()
    print "NIL",

与える:

In [5]: t.linearize()
1 2 5 NIL 3 4 NIL NIL NIL NIL

現在、"NIL"子供がいる場合は印刷しません。(そして、コメントに記載されているように、あなたは本当にchildren=Noneそれからself.children = children if children is not None else []何かを望んでいます。)

yield単に印刷するのではなく、これを各要素に再加工することに興味があるかもしれませんが、明らかにそれはあなた次第です。

于 2013-02-04T18:54:50.413 に答える