I tend to do this:
Code:
void DeleteHelper(NodePtr_t & ToDelete, NodePtr_t & NodeToModify)
{
if (!ToDelete->m_Left)
{
if (!ToDelete->m_Right)
NodeToModify = nullptr;
else
NodeToModify = ToDelete->m_Right;
}
else if (!ToDelete->m_Right)
{
NodeToModify = ToDelete->m_Left;
}
}
I also reduce the number of operator overloads that would be required to use the code by swapping a greater-than around to be a less-than.
I'm not sure I'd have that InsertHelper function myself. The logic of it is a bit strange.