Professional Documents
Culture Documents
Lab 6 19
Lab 6 19
Lab 6 19
Ім'я:
Група:
Варіант: 19
Дата захисту:
Кафедра: САПР
Дисципліна: Алгоритмізація та програмування. Ч.2
Перевірив: Артищук І.В.
ЗВІТ
до лабораторної роботи №6
на тему "СТВОРЕННЯ I ВЕДЕННЯ ЗБАЛАНСОВАНИХ БІНАРНИХ ДЕРЕВ "
Індивідуальне завдання:
19.Написати програму, яка створює збалансоване бінарне дерево. Тип
інформаційного поля char. Написати процедуру, яка знаходить середнє арифметичне
елементів дерева.
Код програми:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <queue>
using namespace std;
class Node
{
public:
int key;
Node* left;
Node* right;
int height;
int val;
};
int height(Node* N)
{
if (N == NULL)
return 0;
return N->height;
}
Node* rightRotate(Node* y)
{
Node* x = y->left;
Node* T2 = x->right;
x->right = y;
y->left = T2;
y->height = max(height(y->left),
height(y->right)) + 1;
x->height = max(height(x->left),
height(x->right)) + 1;
return x;
}
Node* leftRotate(Node* x)
{
Node* y = x->right;
Node* T2 = y->left;
y->left = x;
x->right = T2;
x->height = max(height(x->left),
height(x->right)) + 1;
y->height = max(height(y->left),
height(y->right)) + 1;
return y;
}
int getBalance(Node* N)
{
if (N == NULL)
return 0;
return height(N->left) - height(N->right);
}
if (node == NULL)
return(newNode(key));
node->height = 1 + max(height(node->left),
height(node->right));
int balance = getBalance(node);
return node;
}
int main()
{
Node* root = NULL;
return 0;
}
Результат:
Блок-схеми:
Висновок: ознайомився iз способом подання даних в оперативнiй пам'ятi ЕОМ у
виглядi збалансованих бінарних (АВЛ) дерев. Оволодiв методами роботи iз
збалансованими бінарними деревами.