在我看来,我无法弄清楚它是如何工作的,它对它毫无用处。
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/