我正在實現樹節點功能。但我被卡在刪除節點。 它一直給這個錯誤。我已經用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