Recursion 有人能解释一下递归是如何为顺序BST遍历工作的吗?

Recursion 有人能解释一下递归是如何为顺序BST遍历工作的吗?,recursion,binary-search-tree,inorder,Recursion,Binary Search Tree,Inorder,我意识到按顺序遍历的代码看起来像 if left[x] != NULL recurse left process right[x] !=NULL recurse right 我把一切都编好了,很好用。然后,我开始思考更多,并且对这个过程进行了仔细的思考,现在我对递归的实际工作方式感到困惑。因为我认为一直以来,递归都会结束,因为两个节点都是空的 如果我一直在左边,并且右节点和左节点都为空,那么递归调用如何将我带回父节点以继续遍历?与所有递归一样*,调用堆栈包含递归

我意识到按顺序遍历的代码看起来像

  if left[x] != NULL
    recurse left
    process
  right[x] !=NULL
    recurse right
我把一切都编好了,很好用。然后,我开始思考更多,并且对这个过程进行了仔细的思考,现在我对递归的实际工作方式感到困惑。因为我认为一直以来,递归都会结束,因为两个节点都是空的


如果我一直在左边,并且右节点和左节点都为空,那么递归调用如何将我带回父节点以继续遍历?

与所有递归一样*,调用堆栈包含递归调用开始返回时的操作控制-程序控制返回到
当前\u节点
指针设置为进行递归调用之前正在检查的父节点的点


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

在您发表评论之前,我立刻想到了这一切。非常感谢。