0

ツリートラバーサルメソッドを作成しています。出力は1行である必要があります。ただし、メソッドが完了したら、改行を挿入したいと思います。関数内でこれを行う方法はありますか、それとも外部から呼び出す必要がありますか?

今私は持っています:

def postorder_transversal(self):
    if self.node == None:
        return 0
    for child in self.children:
        child.postorder_transversal()
    print self.node,

それを変更する方法について何か考えはありますか?

4

3 に答える 3

2

次のように関数内で実行できます。

def postorder_transversal(self, add_newline=True):
    if self.node == None:
        return 0
    for child in self.children:
        child.postorder_transversal(add_newline=False)
    print self.node,
    if add_newline:
        print

外でやったほうがきれいかもしれませんが。

于 2013-02-03T21:52:40.907 に答える
2

深さをパラメーターとして渡すことができます。

def postorder_transversal(self, depth=0):
    if self.node == None:
        return 0

    for child in self.children:
        child.postorder_transversal(depth=depth + 1)

    print self.node,

    if depth == 0:
        print

そしてprint関数で:

from __future__ import print_function

def postorder_transversal(self, depth=0):
    if self.node == None:
        return 0

    for child in self.children:
        child.postorder_transversal(depth=depth + 1)

    print(self.node, end='\n' * (depth == 0))
于 2013-02-03T21:53:36.380 に答える
0

この関数が再帰を取り消すと、一連のノードが出力されます。その直後に、stdoutに改行を追加します。そうです、外で。

于 2013-02-03T21:50:31.223 に答える