Лабораторная работа №6. Шарибов Ислом Проверил: Тошпулатова Н. Б ташкент 2021



Download 463,55 Kb.
Sana21.04.2022
Hajmi463,55 Kb.
#569364
TuriЛабораторная работа
Bog'liq
лаб раб 6


МИНИСТЕРСТВО ПО РАЗВИТИЮ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И КОММУНИКАКЦИЙ РЕСПУБЛИКИ УЗБЕКИСТАН

ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ИМЕНИ МУХАММАДА АЛЬ-ХОРАЗМИ


Кафедра: Структурное программирование


Факультет: Информационной безопасности


ЛАБОРАТОРНАЯ РАБОТА №6.
Выполнил: Шарибов Ислом
Проверил: Тошпулатова Н.Б
Ташкент – 2021

ЛАБОРАТОРНАЯ РАБОТА №6

«Исследование древовидных структур данных. Бинарные деревья (основные процедуры)»


Цель работы: исследовать и изучить процедуры, используемые при работе с бинарными (двоичными) деревьями. Овладеть навыками написания программ по исследованию бинарных деревьев.
Задание. Определить новую динамическую структуру данных (бинарное дерево на основе нелинейного связного списка). Описать стандартные операции-процедуры по работе со структурой данных (добавления нового элемента, обхода дерева, удаления элемента, визуализации дерева и индивидуального задания).
20. Вершины дерева вещественные числа. Описать процедуру, которая удаляет все вершины, которые больше заданного значения Х

#include


using namespace std;

int tabs = 0;


int kol_vo = 0;

struct Branch


{
int Data;
Branch* LeftBranch;
Branch* RightBranch;
};

void Add(int aData, Branch*& aBranch)


{
if (!aBranch)
{
aBranch = new Branch;
aBranch->Data = aData;
aBranch->LeftBranch = 0;
aBranch->RightBranch = 0;
return;
}
else
if (aBranch->Data > aData)
{
Add(aData, aBranch->LeftBranch);
}
else
{
Add(aData, aBranch->RightBranch);
};
}
void print(Branch* aBranch)
{
if (!aBranch) return;
tabs += 5;

print(aBranch->LeftBranch);


for (int i = 0; i < tabs; i++) cout << " ";


cout << aBranch->Data << endl;
print(aBranch->RightBranch);

tabs -= 5;


return;
}

void add_elem(int aData, Branch*& aBranch)


{
if (!aBranch)
{
aBranch = new Branch;
aBranch->Data = aData;
aBranch->LeftBranch = 0;
aBranch->RightBranch = 0;
return;
}
else
{
if (aData < aBranch->Data) {
add_elem(aData, aBranch->LeftBranch);
}
else if (aData > aBranch->Data) {
add_elem(aData, aBranch->RightBranch);
}
}
}

void is_Empty(Branch*& aBranch)


{
if (!aBranch)
{
cout << "Дерево пустое...";
}
else
{
cout << "Дерево не пустое...";
}
}

void FreeTree(Branch* aBranch)


{
if (!aBranch) return;
FreeTree(aBranch->LeftBranch);
FreeTree(aBranch->RightBranch);
delete aBranch;
return;
}

Branch* del_elem(Branch*& aBranch, int aData) {


if (aBranch == NULL)
return aBranch;

if (aData == aBranch->Data) {


Branch* tmp;


if (aBranch->RightBranch == NULL)
tmp = aBranch->LeftBranch;
else {

Branch* ptr = aBranch->RightBranch;


if (ptr->LeftBranch == NULL) {
ptr->LeftBranch = aBranch->LeftBranch;
tmp = ptr;
}
else {

Branch* pmin = ptr->LeftBranch;


while (pmin->LeftBranch != NULL) {
ptr = pmin;
pmin = ptr->LeftBranch;
}
ptr->LeftBranch = pmin->RightBranch;
pmin->LeftBranch = aBranch->LeftBranch;
pmin->RightBranch = aBranch->RightBranch;
tmp = pmin;
}
}

delete aBranch;


return tmp;
}
else if (aData < aBranch->Data)
aBranch->LeftBranch = del_elem(aBranch->LeftBranch, aData);
else
aBranch->RightBranch = del_elem(aBranch->RightBranch, aData);
return aBranch;
}

int main()


{
setlocale(LC_ALL, "rus");
Branch* Root = 0;
int vel;
int element;
int k;

cout << "Введите кол-во элементов для будущего дерева: ";


cin >> vel;
cout << endl;

cout << "Проверим дерево на пустоту до его заполнения: " << endl;


is_Empty(Root);
cout << endl;

for (int i = 0; i < vel; i++)


{
int a;
cin >> a;
Add(a, Root);
}

/*for (int i = 0; i < vel; i++)


{
Add(rand() % 100, Root);
}*/

cout << "Проверим дерево на пустоту после его заполнения: " << endl;


is_Empty(Root);
cout << endl;
cout << "Вывод бинарного дерева: " << endl;
print(Root);
cout << endl;

cout << "Удалим элемент из бинарного дерева:" << endl;


cout << "Введите нэлемент: ";
cin >> element;
int q = element;
for (int i = q; i < 100; i++)
{
del_elem(Root,i);
}
cout << "Вывод бинарного дерева: " << endl;
print(Root);
cout << endl;
FreeTree(Root);
cout << "Вся динамическая память очищена..." << endl;

return 0;


}

Download 463,55 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish