Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Tree::delNode(int _data)
- {
- if(this->root!=NULL)
- {
- Node* temp = findNode(_data);
- if (temp)
- {
- if (temp->right != NULL)
- {
- std::cout << "right has node, need to delete " << std::endl;
- delNode(temp, temp->right, 'R');
- }
- else
- {
- if (temp->left != NULL)
- {
- std::cout << "left has node, need to delete " << std::endl;
- delNode(temp, temp->left, 'L');
- }
- else
- {
- if (temp->_data == _data) {
- std::cout<< "->node without leaves and it\'s our number " << std::endl;
- //delete temp;
- temp = NULL;
- } else
- std::cout << "node without leaves" << std::endl;
- }
- }
- } else
- {
- std::cout << " nothing to delete " << std::endl;
- }
- }
- else
- {
- std::cout << " nothing to delete " << std::endl;
- }
- }
- void Tree::delNode(Node*& original, Node*& node, const char l_r)
- {
- if (node !=NULL)
- switch (l_r)
- {
- case 'R':
- {
- if (node->left != NULL)
- {
- std::cout << "going left on the right node " << std::endl;
- delNode(original, node->left, 'R');
- }
- else
- {
- std::cout << "gonna change original and r->l " << std::endl;
- original->_data = node->_data;
- node = node->right;
- }
- break;
- }
- case 'L' :
- {
- if (node->right != NULL )
- {
- std::cout << "going right on the left node " << std::endl;
- delNode(original, node->right, 'L');
- }
- else
- {
- std::cout << "gonna change original and l->r " << std::endl;
- original->_data = node->_data;
- node = node->left;
- }
- break;
- }
- }
- else
- {
- std::cout << " got an error in private method del_tree on entering in cycle" << std::endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement