Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. struct Magazin
  2. {
  3. char name[32];
  4. int kolvo_tovar; // у.е.
  5.  
  6. }mg;
  7.  
  8. struct Root
  9. {
  10. Magazin mg;
  11. int key;
  12. Root *left, *right;
  13.  
  14. }*root = NULL;
  15.  
  16.  
  17. Root *search(Root * root, int key) // Функция поиска элемента по ключу, можно преобразовать
  18. {
  19. // Если дерево пусто или ключ корня равен искомому ключу, то возвращается указатель на корень
  20. if ((root == NULL) || (root->key = key))
  21. return root;
  22. // Поиск нужного узла
  23. if (key < root->key)
  24. return search(root->left, key);
  25. else return search(root->right, key);
  26. }
  27.  
  28. Root* DeleteNode(Root *root, Magazin mg) {
  29. if (root == NULL)
  30. return root;
  31.  
  32. if (mg.name == root->mg.name) {
  33.  
  34. Root* tmp;
  35. if (root->right == NULL)
  36. tmp = root->left;
  37. else {
  38.  
  39. Root* ptr = root->right;
  40. if (ptr->left == NULL) {
  41. ptr->left = root->left;
  42. tmp = ptr;
  43. }
  44. else {
  45.  
  46. Root* pmin = ptr->left;
  47. while (pmin->left != NULL) {
  48. ptr = pmin;
  49. pmin = ptr->left;
  50. }
  51. ptr->left = pmin->right;
  52. pmin->left = root->left;
  53. pmin->right = root->right;
  54. tmp = pmin;
  55. }
  56. }
  57.  
  58. delete root;
  59. return tmp;
  60. }
  61. else if (mg.name < root->mg.name)
  62. root->left = DeleteNode(root->left, mg);
  63. else
  64. root->right = DeleteNode(root->right, mg);
  65. return root;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement