void BST::DeleteNode(TreeData El, int& Success) { DeleteHelp(GetRoot(), El, Success); } NodePtr BST::DeleteMin(NodePtr Ptr) { NodePtr Temp; if (Ptr -> Left != NULL) return DeleteMin(Ptr -> Left); else { Temp = Ptr; Ptr = Ptr -> Right; return Temp; } } void BST::DeleteHelp(NodePtr Ptr, TreeData El, int& Success) { NodePtr Temp; if (Ptr == NULL) Success = False; else if (El < Ptr -> Left -> Info) DeleteHelp(Ptr -> Left, El, Success); else if (El > Ptr -> Left -> Info) DeleteHelp(Ptr -> Right, El, Success); else { Temp = Ptr; if (Ptr -> Left == NULL) Ptr = Ptr -> Right; else if (Ptr -> Right == NULL) Ptr = Ptr -> Left; else { Temp = DeleteMin(Ptr -> Right); Ptr -> Info = Temp -> Info; } delete Temp; } }