Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.46 KB | None | 0 0
  1. #include <stdio.h>;
  2.  
  3. struct btree {
  4.     int value;
  5.     struct btree *left, *right;
  6. };
  7.  
  8. // Включение вершины в дерево
  9. void Ins_Btree(int val, btree **q) {
  10.     if (*q == NULL) {//Нашли место для добавления
  11.         *q = new btree;
  12.         (*q)->left = NULL;
  13.         (*q)->right = NULL;
  14.         (*q)->value = val;
  15.         return;
  16.     }
  17.     if ((*q)->value > val)
  18. // Добавляем в левое поддерево
  19.         Ins_Btree(val, &(*q)->left);
  20.     else
  21. // Добавляем в правое поддерево
  22.         Ins_Btree(val, &(*q)->right);
  23. }
  24.  
  25. //Вывод содержимого дерева
  26. void Print_Btree(btree *p) {
  27.     if (p == NULL) return;
  28.     Print_Btree(p->left);
  29.     printf("%d ", p->value);
  30.     Print_Btree(p->right);
  31. }
  32.  
  33. btree *get_min(btree *tree) {
  34.     if (tree->left == NULL) return tree;
  35.     get_min(tree->left);
  36. }
  37.  
  38. btree *get_max(btree *tree) {
  39.     if (tree->right == NULL) return tree;
  40.     get_max(tree->right);
  41. }
  42.  
  43. void swap_min_max(btree *tree) {
  44.     int temp = get_min(tree)->value;
  45.     get_min(tree)->value = get_max(tree)->value;
  46.     get_max(tree)->value = temp;
  47. }
  48.  
  49. int main() {
  50.     int d;
  51.     btree *root = NULL;
  52.     puts("Дерево. Ввод чисел:");
  53.     while (1) {
  54.         scanf("%d", &d);
  55.         if (d == 0)break;
  56.         Ins_Btree(d, &root);
  57.     }
  58.     Print_Btree(root);
  59.     puts("\n");
  60.     swap_min_max(root);
  61.     Print_Btree(root);
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement