【问题标题】:Can someone explain how the recursion works for an inorder BST traversal?有人可以解释递归如何用于中序 BST 遍历吗?
【发布时间】:2015-03-12 20:37:06
【问题描述】:

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

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

我把所有东西都编码了,工作正常。然后我开始思考更多并且过度考虑了这个过程,现在迷失在递归的实际工作方式中。因为我认为一路离开,递归将结束,因为两个节点都是空的。

如果我一路向左,左右节点都为NULL,递归调用如何让我回到父节点继续遍历?

【问题讨论】:

    标签: recursion binary-search-tree inorder


    【解决方案1】:

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

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

    【讨论】:

    • 这一切都在你发表评论之前一下子击中了我。谢谢。
    猜你喜欢
    • 2021-08-06
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    相关资源
    最近更新 更多