在我看来,我无法弄清楚它是如何工作的,它对它毫无用处。

Node* FindNode(Node *rootNode, int data)
 {
  if (!rootNode)
   return NULL;
  else
  {
   if (rootNode->data == data)
    return rootNode;
   else
   {
    FindNode(rootNode->left, data);
    FindNode(rootNode->right, data);
   }
  }
 }

最佳答案

没有。它应该是:

Node* FindNode(Node *rootNode, int data) {
    if (!rootNode) {
        return NULL;
    }else if (rootNode->data == data) {
        return rootNode;
    }else if (data < rootNode->data) {
        return FindNode(rootNode->left, data);
    }else{
        return FindNode(rootNode->right, data);
    }
 }


请注意额外的return语句和额外的else if子句。

编辑—总结以下评论:您发布的代码可能起作用的唯一原因是,如果编译器实现细节和测试数据的奇怪组合对您有利。您绝对应该解决此问题,而不是保持代码的状态。

关于c++ - 此递归函数如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3473938/

10-13 09:53