私はツリーノード関数を実装しています。しかし、私は削除ノードで立ち往生しています。 このエラーは引き続き発生します。私は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