Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (root == NULL) // Sprawdzenie czy drzewo istnieje
- return root;
- if (key > root->key)
- root->right = del(root->right, key);
- else
- if (key < root->key)
- root->left = del(root->left, key);
- else // node key = key => delete node
- {
- if (root->left == NULL || root->right == NULL)
- {
- avl* temp;
- if (root->left != NULL)
- temp = root->left;
- else
- temp = root->right;
- if (temp == NULL)
- {
- temp = root;
- root = NULL;
- }
- else // 1 podgałąź
- *root = *temp;
- delete temp;
- }
- else
- {
- avl* min = root->right;
- while (min->left != NULL) //szukanie minimum
- {
- min = min->left;
- }
- root->key = min->key;
- root->right = del(root->right, min->key);
- }
- }
- if (root == NULL) // Sprawdzenie czy został usunięty jedyny node
- return root;
- root->height = std::max(height(root->left), height(root->right)) + 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement