Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки
Національний університет “Львівська політехніка”
Кафедра ІСМ
Лабораторна робота №7
“ Дерева. Бінарні дерева. Пошук. ”
Мета роботи: набуття навичок програмування дерев.
Завдання для виконання
Розробити засоби динамічного збереження дерев та виконання дій над ними згідно варіанту.
Варіант індивідуального завдання
Знайти вершину в дереві.
Текст програми
#include<stdlib.h>
#include<conio.h>
struct tree
{int key;
struct tree *l,*r;};
struct tree *root, *cur;
struct tree * Find(struct tree *, int);
struct tree * insert (struct tree *c, int k, struct tree * new1)
{ struct tree *p,*l; int a;
if(!c)
{c=(struct tree*) malloc (sizeof(struct tree));
c->key=k;
c->l =NULL;
c->r =NULL;
if (a==1) new1->l=c;
if (a==2) new1->r=c;
return(c);
}
else
{ new1=c;
if(c->key>k)
{ c=c->l; a=1;
p=insert (c,k,new1);
}
else
{c=c->r; a=2;
p=insert (c,k,new1);
}
}
}
void main()
{ clrscr();
int k,n;
puts("Vvedit vershyny dereva");
scanf("%d",&k);
root=insert(NULL,k,cur);
scanf("%d",&k);
while(k!=0)
{cur=insert(root,k,cur);
scanf("%d",&k);}
puts("Vvedit vershynu yaku treba znauty");
scanf("%d",&k);
cur=Find(root,k);
if(!cur) puts("Nema takoi vershyny");
else puts("Ye taka vershyna");
}
struct tree* Find(struct tree *c, int k)
{ if (!c) return (NULL);
else
{if (c->key==k) return (c);
else
if (c->key>k) c=Find(c->l,k);
else c=Find(c->r,k);
}
}
Висновок: на даній лабораторній роботі я набув практичних навичок програмування дерев.