Я не могу понять, как это работает, на мой взгляд, как только он доберется до ответа, он ничего не делает с этим.Как эта рекурсивная функция работает?
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);
}
}
}
Ну, это то, что я думал ... но он работает, по крайней мере, как часть более крупной системы. – fauxCoder
Возможно, что возвращаемое значение заканчивается в нужном месте из-за конкретной реализации вашего оператора 'return'; однако вы не можете полагаться на это, всегда работая. Кроме того, поскольку вы всегда искали оба левого и правого поддеревьев, вы не получали никакого преимущества от использования BST над массивом. – David
@ Шрапнель: Нет, нет. Точнее, то, что вы разместили в своем оригинальном посте, не работает. Скорее всего, вы неправильно воспроизвели код. – AnT