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

你可以打电话给我,在上面的代码的哪一行,它会遍历吗?谢谢 –