Advertisement
Guest User

:^))

a guest
May 23rd, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1.     //metoda pomocnicza do znajdywania najmniejszej wartosci w poddrzewie
  2.     Node *minKey(Node *cnode) {
  3.         Node *curr = cnode;
  4.         while (curr && curr->left != nullptr)
  5.             curr = curr->left;
  6.  
  7.         return curr;
  8.     }
  9.  
  10.     //metoda pomocnicza do usuwania wierzchołka
  11.     //znajdujemy nastepnik w poddrzewie, kopiujemy wartosc do wezla i usuwamy zastepce
  12.     Node *usunxd(T value, Node *cnode) {
  13.         if (cnode == nullptr)
  14.             throw invalid_argument("nie ma takiej wartosci w drzewie");
  15.         if (value < cnode->key)
  16.             cnode->left = usunxd(value, cnode->left);
  17.         else if (value > cnode->key)
  18.             cnode->right = usunxd(value, cnode->right);
  19.         else {
  20.             if (cnode->left == nullptr) {
  21.                 Node *temp = cnode->right;
  22.                 cnode->right = nullptr;
  23.                 delete cnode;
  24.                 return temp;
  25.             } else if (cnode->right == nullptr) {
  26.                 Node *temp = cnode->left;
  27.                 cnode->left = nullptr;
  28.                 delete cnode;
  29.                 return temp;
  30.             }
  31.             Node *temp = minKey(cnode->right);
  32.             cnode->key = temp->key;
  33.             cnode->right = usunxd(temp->key, cnode->right);
  34.         }
  35.         return cnode;
  36.     }
  37.  
  38.     //metoda usuwania
  39.     void usunWezel(T value) {
  40.         if (this->node == nullptr)
  41.             throw invalid_argument("drzewo jest puste");
  42.         else
  43.             node = usunxd(value, this->node);
  44.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement