ziobrowskyy

Bst remove

Apr 4th, 2020
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1. void TREE::usuwanie(NODE*&el){
  2. //  cout << "usuwanie elementu " << el->val << endl;
  3.     if(el->right == NULL && el->left == NULL){
  4.         if(el->parent == NULL){
  5.             root = NULL;
  6.         }
  7.         else if(el->parent->left == el){
  8.             el->parent -> left = NULL;
  9.         }
  10.         else{
  11.             el->parent ->right = NULL;
  12.         }
  13.         delete el;
  14.         return;
  15.     }  
  16.     if(el->right!=NULL^el->left!=NULL){
  17.         NODE*tmp;
  18.         if(el->right!=NULL){
  19.             tmp = el->right;
  20.         }
  21.         else{
  22.             tmp=el->left;
  23.         }
  24.         tmp->parent = el->parent;
  25. //      cout << "element tmp: " << tmp->val << endl;
  26.         if(el->parent == NULL){
  27.             root = tmp;
  28.         }
  29.         else if(el->parent->left == el){
  30.             el->parent -> left = tmp;
  31.         }
  32.         else{
  33.             el->parent ->right = tmp;
  34.         }
  35.         delete el;
  36. //      cout << "element tmp po usunieciu: " << endl;
  37. //      tmp->wypisz();
  38.         return;
  39.     }
  40.     NODE*tmp = el->right;
  41.     while(tmp->left != NULL){
  42.         tmp = tmp->left;
  43.     }
  44.     el->val=tmp->val;
  45.     usuwanie(tmp);
  46. }
Advertisement
Add Comment
Please, Sign In to add comment