有人可以解释递归对于有序的BST遍历是如何工作的吗?

时间:2015-03-12 20:37:06

标签: recursion binary-search-tree inorder

我意识到inorder遍历的代码看起来像

  if left[x] != NULL
    recurse left
    process
  right[x] !=NULL
    recurse right

我将所有内容编码,运行正常。然后我开始思考更多,并且过度思考过程,现在迷失了递归的实际工作方式。因为我认为一直都是这样,递归会因为两个节点都为空而结束。

如果我一路走来,左右节点都是NULL,那么递归调用如何让我回到父节点继续遍历?

1 个答案:

答案 0 :(得分:2)

与所有递归*一样,调用堆栈包含操作的控件,因为递归调用开始返回 - 程序控制返回到您的current_node指针设置为您之前检查的父项的位置进行递归调用。

(*所有递归,除非有正在进行的尾调用优化,在这种情况下它只是一个循环)。