我正在实现树节点功能。但我被卡在删除节点。 它一直给这个错误。我已经用TreeNode *函数尝试了这一点,它完全可以工作,但是当我试图将其更改为void函数时,它会一直给出错误。C++错误(从不兼容类型'void'分配给TreeNode *)
我想把它变成一个void函数。
void Tree::deleteFrom(TreeNode* startintPoint, int value)
//from example in class, deleting a node
if (startintPoint == nullptr)
{
return;
}
else if (startintPoint->left != nullptr && value < startintPoint->value)
{
startintPoint->left = deleteFrom(startintPoint->left, value);
}
else if (startintPoint->right != nullptr && value > startintPoint->value)
{
startintPoint->right = deleteFrom(startintPoint->right, value);
}
else
{
if (startintPoint->left == nullptr && startintPoint->right == nullptr)
{
delete startintPoint;
startintPoint = nullptr;
}
else if (startintPoint->left == nullptr)
{
TreeNode* temp = startintPoint;
startintPoint = startintPoint->right;
delete temp;
}
else if (startintPoint->right == nullptr)
{
TreeNode* temp = startintPoint;
startintPoint = startintPoint->left;
delete temp;
}
else
{
TreeNode* temp = findMinValue(startintPoint->right);
startintPoint->value = temp->value;
startintPoint->right = deleteFrom(startintPoint->right, temp->value);
}
}
return startintPoint;
}
您可以像'startintPoint-> left = deleteFrom(...)一样分配,但是'deleteFrom'的返回值类型为'void',即'void deleteFrom(...)'。所以它不会返回任何可以分配的值。 –
此函数底部的'return startintPoint'应该直接说明'void'是这个函数的错误返回类型。 – WhozCraig