Seminar_4_5.ppt
- Количество слайдов: 5
/* Подключение библиотек и структуры одинаковые для обеих задач */ #include <stdio. h> #include <malloc. h> struct node { node *left, *right; int info; };
Задача 1. Дан массив целых чисел. Упорядочить его по возрастанию с использованием бинарного дерева. int *ua; /* Глобальная переменная */ /* Итерационная функция формирования дерева */ node *bin(int n, int a[]) { node *root=NULL, *ptr 1, *ptr 2; int i; for (i=0; i<n; i++) { /* Поиск узла, к которому присоединяем новый узел */ ptr 1=ptr 2=root; while (ptr 2) {ptr 1=ptr 2; if (a[i]<ptr 1 ->info) ptr 2=ptr 1 ->left; else ptr 2=ptr 1 ->right; } //Создание нового узла ptr 2=(node *) malloc(sizeof(node)); ptr 2 ->info=a[i]; ptr 2 ->left= ptr 2 ->right=NULL; //Присоединение узла к дереву if (!root) root=ptr 2; else if (a[i]<ptr 1 ->info) ptr 1 ->left=ptr 2; else ptr 1 ->right=ptr 2; } return (root); }
//Симметричный обход дерева main() void sim(node *ptr) { int a[100], n, i; { printf("n = "); if (ptr) scanf("%d", &n); { printf("Input array elements : n"); sim(ptr->left); for (i=0; i<n; i++) *ua++=ptr->info; scanf("%d", a+i); sim(ptr->right); sorting(n, a); } printf("Array in order: n"); } for (i=0; i<n; i++) //Функция сортировки printf("%7 d", a[i]); void sorting(int n, int a[]) printf("n"); { return(0); ua=a; } sim(bin(n, a)); }
Задача 2. Удалить из данного бинарного дерева все значения, равные заданному числу Х. X=20 Укрупнённый алгоритм: нач пока корень = Х удалить корень кц удалить Х из левого поддерева удалить Х из правого поддерева кон
//Удаление чисел, равных Х void udalx(node **ptr, int x) { node *root, *p, *q; if (!*ptr) return; while ((root=*ptr) && root->info==x) { if (!root->right) *ptr=root->left; else {*ptr=root->right; if (root->left) //есть левое поддерево //вызов node *root; int x; udalx(&root, x); { /* поиск эл-та, к которому надо подключить ветвь */ for (p=*ptr; p; q=p, p=p->left); q->left=root->left; } } free(root); } if(*ptr) if ((*ptr)->info>x) udalx(&(*ptr)->left, x); else udalx(&(*ptr)->right, x); }
Seminar_4_5.ppt