السلام عليكم
لدي هذه الشجرة من نوع Binary Search Tree و أريد حذف العنصر رقم 25 باستخدام الكود التالي :
الشجرة :

الكود :
void BinarySearchTree::makeDeletion01( TreeNode*& nodePtr )
{
TreeNode* tempPtr; //TreeNode* tempPtr = new TreeNode;
if ( nodePtr -> left == NULL )// the node has a right child
{
tempPtr = nodePtr;
nodePtr = nodePtr -> right;
delete tempPtr;
}
else
if ( nodePtr -> right == NULL ) // the node has a left child
{
tempPtr = nodePtr;
nodePtr = nodePtr -> left;
delete tempPtr;
}
else // the node has two childs
{
TreeNode* tempPtr = nodePtr -> right;
//tempPtr = tempPtr -> right;
while ( tempPtr -> left != NULL )
tempPtr = tempPtr -> left;
tempPtr -> left = nodePtr -> left;
tempPtr = nodePtr;
nodePtr = nodePtr -> right;
delete tempPtr;
}
}فكيف يكون شكل الشجرة بعد الحذف ؟