Advertisement
Trapov

Untitled

Nov 21st, 2016
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. void Tree::delNode(int _data)
  2. {
  3.   if(this->root!=NULL)
  4.   {
  5.     Node* temp = findNode(_data);
  6.     if (temp)
  7.     {
  8.       if (temp->right != NULL)
  9.       {
  10.         std::cout << "right has node, need to delete " << std::endl;
  11.         delNode(temp, temp->right, 'R');
  12.       }
  13.       else
  14.       {
  15.         if (temp->left != NULL)
  16.         {
  17.           std::cout << "left has node, need to delete " << std::endl;
  18.           delNode(temp, temp->left, 'L');
  19.         }
  20.         else
  21.         {
  22.             if (temp->_data == _data) {
  23.               std::cout<< "->node without leaves and it\'s our number " << std::endl;
  24.               //delete temp;
  25.               temp = NULL;
  26.             } else
  27.               std::cout << "node without leaves" << std::endl;
  28.         }
  29.       }
  30.     } else
  31.     {
  32.       std::cout << " nothing to delete " << std::endl;
  33.     }
  34.   }
  35.   else
  36.   {
  37.     std::cout << " nothing to delete " << std::endl;
  38.   }
  39.  
  40. }
  41.  
  42. void Tree::delNode(Node*& original, Node*& node, const char l_r)
  43. {
  44.   if (node !=NULL)
  45.     switch (l_r)
  46.     {
  47.       case 'R':
  48.       {
  49.         if (node->left != NULL)
  50.         {
  51.           std::cout << "going left on the right node " << std::endl;
  52.           delNode(original, node->left, 'R');
  53.         }
  54.         else
  55.         {
  56.           std::cout << "gonna change original and r->l " << std::endl;
  57.           original->_data = node->_data;
  58.  
  59.           node = node->right;
  60.         }
  61.         break;
  62.       }
  63.       case 'L' :
  64.       {
  65.         if (node->right != NULL )
  66.         {
  67.           std::cout << "going right on the left node " << std::endl;
  68.           delNode(original, node->right, 'L');
  69.         }
  70.         else
  71.         {
  72.           std::cout << "gonna change original and l->r " << std::endl;
  73.           original->_data = node->_data;
  74.           node = node->left;
  75.         }
  76.         break;
  77.       }
  78.  
  79.     }
  80.     else
  81.     {
  82.       std::cout << " got an error in private method del_tree on entering in cycle" << std::endl;
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement