Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. if (it==end())
  2.         throw std::out_of_range("Out of Map range!");
  3.     Node *toRemove=it.getNode();
  4.     if (toRemove->left==nullptr && toRemove->right==nullptr)
  5.     {
  6.         if (toRemove==root)
  7.             root=nullptr;
  8.         else if (toRemove->kv->first<toRemove->parent->kv->first)
  9.             toRemove->parent->left=nullptr;
  10.         else
  11.             toRemove->parent->right=nullptr;
  12.         delete toRemove;
  13.     }
  14.     else if (toRemove->left==nullptr)
  15.     {
  16.         if (toRemove==root)
  17.         {
  18.             root=root->right;
  19.             root->parent=nullptr;
  20.         }
  21.         else if (toRemove->kv->first<toRemove->parent->kv->first)
  22.             toRemove->parent->left=toRemove->right;
  23.         else
  24.             toRemove->parent->right=toRemove->right;
  25.         delete toRemove;
  26.     }
  27.     else if (toRemove->right==nullptr)
  28.     {
  29.         if (toRemove==root)
  30.         {
  31.             root=root->left;
  32.             root->parent=nullptr;
  33.         }
  34.         else if (toRemove->kv->first<toRemove->parent->kv->first)
  35.             toRemove->parent->left=toRemove->left;
  36.         else
  37.             toRemove->parent->right=toRemove->left;
  38.         delete toRemove;
  39.     }
  40.     else
  41.     {
  42.         Node* change=toRemove->right;
  43.         while (change->left!=nullptr)
  44.             change=change->left;
  45.         std::swap<value_type*>(toRemove->kv, change->kv);
  46.         remove(change->kv->first);
  47.     }
  48.     --tm_size;
  49.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement