Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <class T, class Compare>
- typename BST<T, Compare>::Node* BST<T, Compare>::del(BST<T, Compare>::Node *r, T data)
- {
- if(r == nullptr)
- {
- return r;
- }
- if(cmt(data, r->data))
- {
- r->left = del(r->left, data);
- }
- else if(cmt(r->data, data))
- {
- r->right = del(r->right, data);
- }
- else if(r->left != nullptr && r->right != nullptr)
- {
- r->data = minimum(r->right)->data;
- r->right = del(r->right, r->data);
- }
- else
- {
- if(r->left != nullptr)
- {
- if(r == root)
- {
- root = r->left;
- root->parent = nullptr;
- }
- count--;
- r->left->parent = r->parent;
- auto r1 = r->left;
- delete r;
- r = r1;
- }
- else
- {
- if(r == root)
- {
- root = r->right;
- if(root != nullptr)
- {
- root->parent = nullptr;
- }
- }
- count--;
- if(r->right != nullptr)
- {
- r->right->parent = r->parent;
- }
- auro r2 = r->rigth;
- delete r;
- r = r2;
- }
- }
- return r;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement