Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Magazin
- {
- char name[32];
- int kolvo_tovar; // у.е.
- }mg;
- struct Root
- {
- Magazin mg;
- int key;
- Root *left, *right;
- }*root = NULL;
- Root *search(Root * root, int key) // Функция поиска элемента по ключу, можно преобразовать
- {
- // Если дерево пусто или ключ корня равен искомому ключу, то возвращается указатель на корень
- if ((root == NULL) || (root->key = key))
- return root;
- // Поиск нужного узла
- if (key < root->key)
- return search(root->left, key);
- else return search(root->right, key);
- }
- Root* DeleteNode(Root *root, Magazin mg) {
- if (root == NULL)
- return root;
- if (mg.name == root->mg.name) {
- Root* tmp;
- if (root->right == NULL)
- tmp = root->left;
- else {
- Root* ptr = root->right;
- if (ptr->left == NULL) {
- ptr->left = root->left;
- tmp = ptr;
- }
- else {
- Root* pmin = ptr->left;
- while (pmin->left != NULL) {
- ptr = pmin;
- pmin = ptr->left;
- }
- ptr->left = pmin->right;
- pmin->left = root->left;
- pmin->right = root->right;
- tmp = pmin;
- }
- }
- delete root;
- return tmp;
- }
- else if (mg.name < root->mg.name)
- root->left = DeleteNode(root->left, mg);
- else
- root->right = DeleteNode(root->right, mg);
- return root;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement