|
|
|
binarno_stablo_polje.h
#include <iostream>
using namespace std;
struct tstablo{
int oznaka;
bool iskoristen;
};
struct drvo{
tstablo stablo[1000];
};
int ParentB(int dijete, drvo *stablo){
if(dijete==1) return 0;
return dijete/2;
}
int LeftChildB(int dijete, drvo *stablo){
return dijete*2;
}
int RightChildB(int dijete, drvo *stablo){
return dijete*2+1;
}
int LabelB(int oznaka, drvo *stablo){
return stablo->stablo[oznaka].oznaka;
}
void ChangeLabelB(int x, int oznaka, drvo *stablo){
stablo->stablo[oznaka].oznaka=x;
}
int RootB(drvo *stablo){
return 1;
}
void CreateLeftB(int x, int oznaka, drvo *stablo){
if(stablo->stablo[oznaka*2].iskoristen==true)
cout<<"Dijete vec postoji"<<endl;
else{
stablo->stablo[oznaka*2].oznaka=x;
stablo->stablo[oznaka*2].iskoristen=true;
}
}
void CreateRightB(int x, int oznaka, drvo *stablo){
if(stablo->stablo[oznaka*2+1].iskoristen==true)
cout<<"Dijete vec postoji"<<endl;
else{
stablo->stablo[oznaka*2+1].oznaka=x;
stablo->stablo[oznaka*2+1].iskoristen=true;
}
}
void DeleteB(int n, drvo *stablo){
if(stablo->stablo[n].iskoristen==1){
if (stablo->stablo[n*2].iskoristen==1)
DeleteB(n*2, stablo);
if (stablo->stablo[n*2+1].iskoristen==1)
DeleteB(n*2+1, stablo);
stablo->stablo[n].iskoristen=0;
stablo->stablo[n].oznaka=0;
}
else
cout<<"Uneseni cvor ne postoji"<<endl;
}
drvo *InitB(int oznaka, drvo *stablo){
if(stablo) delete stablo;
stablo=new drvo;
for(int x=0;x<1000;x++){
stablo->stablo[x].iskoristen=false;
}
stablo->stablo[1].oznaka=oznaka;
stablo->stablo[1].iskoristen=true;
return stablo;
}
int NodeB(int br, drvo *stablo){
for(int i=0;i<1000;i++){
if(stablo->stablo[i].oznaka==br)
return i;
}
cout<<"Uneseni cvor ne postoji"<<endl;
return 1;
}




There are currently no comments for this snippet.