2013-02-03 46 views
0

我正在編寫樹遍歷方法。輸出需要在一條線上。但是,當方法完成時,我想插入換行符。在函數中有沒有辦法做到這一點,還是必須從外部調用?Python:在遞歸函數後打印一個新行

現在我有:

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

如何改變它有什麼想法?

回答

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 

儘管它可能是清潔劑就去做外面。

+0

謝謝!這真的很優雅和緊湊 –

+2

@Adam_G:順便說一句,只需將遞歸函數作爲本地函數或單獨的方法,並讓'postorder_traversal(self)'只是調用另一個函數,然後' print'。正如杜加爾所說,我認爲這可能更清潔。 – abarnert

0

此函數退出遞歸之後,將打印一堆節點。在此之後,添加一個換行符到標準輸出。所以是的,在外面。

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