0

我看到它在樹下的位置,但沒有看到它是如何遍歷並回到根的右側。有人可以解釋嗎?這對Python中的遍歷代碼是完全有用的。在遍歷二叉搜索樹的過程中,代碼中哪裏遍歷?

def inorder(self): 
    if self: 
     if self.leftChild: 
      self.leftChild.inorder() 
     print(str(self.value)) 
     if self.rightChild: 
      self.rightChild.inorder() 

在這段代碼中具體是在哪裏回到樹中?

+3

手動跟蹤幾次迭代。你會發現從調用函數*返回一個「返回」一級 - 返回它被調用的地方。這是你正在尋找的向上。 – usr2564301

+0

[Python導師](http://www.pythontutor.com/)可能會幫助你。它在執行程序時可視化了計算機正在執行的步驟。 – Jomy

+0

[Understanding recursion]的可能重複(http://stackoverflow.com/questions/717725/understanding-recursion) –

回答

1

達到函數的結尾與執行return的功能是一樣的,這與執行return None的功能是一樣的。

對於不返回有意義的值的函數,最好讓執行到達函數的末尾,而不是在函數的末尾放置多餘的return

+0

好吧,所以假設它到達函數的末尾並返回None,如果它未在代碼中被調用,它將如何再次運行該函數? –

+0

@Joel:它不必再次運行該功能;它已經*正在運行*。 – Hurkyl

+0

你可以打電話給我,在上面的代碼的哪一行,它會遍歷嗎?謝謝 –