Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:16_II / дерево
.cpp#include<iostream.h>
#include<fstream.h>
struct tru{tru *left;tru *right; int data;};
struct ochered{ochered *next; tru *root;};
ifstream f("abc.txt");
void ochist_ochered(ochered *&g_beg, ochered *&g_end){
g_beg=NULL;
g_end=NULL;}
void v_ochered(ochered *&g_beg,ochered *&g_end, tru *t){
ochered*p;
if(g_beg!=NULL)
{
p=new ochered;
p->root=t;
g_end->next=p;
p->next=NULL;
g_end=p;}
else
{
p=new ochered;
p->root=t;
g_beg=p;
g_end=p;
p->next=NULL;}
}
void iz_ochered(ochered *&g_beg, tru *&t){
t=g_beg->root;
g_beg=g_beg->next;
}
void create_tru(ifstream &f, tru *&t){
tru *p, *m;
bool b;
int x;
t=NULL;
while(!f.eof())
{
f>>x;
if(t==NULL)
{
m=new tru;
m->data=x;
m->left=NULL;
m->right=NULL;
t=m;
}
else
{
m=t;
b=true;
while(b)
{
if(x>=m->data)
{
if(m->right!=NULL) m=m->right;
else
{
p=new tru;
p->data=x;
p->left=NULL;
p->right=NULL;
m->right=p;
b=false;
}
}
else
{
if(m->left!=NULL) m=m->left;
else
{
p=new tru;
p->data=x;
p->left=NULL;
p->right=NULL;
m->left=p;
b=false;
}}}}}}
void levels(tru *T){
ochered *g_beg, *g_end;;
int n,k,k1,i;
tru *p;
p=T;
if(p!=NULL)
{
ochist_ochered(g_beg, g_end);
n=0;
v_ochered(g_beg, g_end,p);
k=1;
do
{
cout<<n<<"-i ypoven";
k1=0;
for(i=1; i<=k; i++)
{
iz_ochered(g_beg,p);
cout<<" "<<p->data;
if(p->left!=NULL)
{
v_ochered(g_beg, g_end,p->left);
k1++;}
if(p->right!=NULL)
{
v_ochered(g_beg, g_end,p->right);
k1++;}
}
cout<<endl;
n++;
k=k1;}
while(k!=0);}}
void main(){
tru*t;
create_tru(f,t);
levels(t);}
Соседние файлы в папке 16_II