struct elmnt {
int vrij;
bool juzd;
};
struct binstab {
struct elmnt elmnti[10000];
};
typedef struct binstab *binstablo;
typedef int chvor;
chvor InitB(chvor ruut, binstab *binstablo){
int i;
for(i=0; i<10000;i++)
binstablo->elmnti[i].juzd=false;
binstablo->elmnti[0].vrij=ruut;
binstablo->elmnti[0].juzd=true;
return 0;
}
chvor RootB(binstab *binstablo){
if(binstablo->elmnti[0].juzd==true) return 0;
else
return -1;
}
chvor LeftChildB(chvor ind, binstab *binstablo){
if(binstablo->elmnti[(ind*2)+1].juzd==true) return (ind*2)+1;
else
return -1;
}
chvor RightChildB(chvor ind, binstab *binstablo){
if(binstablo->elmnti[(ind*2)+2].juzd==true) return (ind*2)+2;
else
return -1;
}
chvor ParentB(chvor ind, binstab *binstablo){
if(ind < 1) return -1;
if(binstablo->elmnti[int((ind-1)/2)].juzd==true) return int((ind-1)/2);
else
return -1;
}
chvor CreateLeftB(int vrij, chvor ind, binstab *binstablo){
int x=(ind*2)+1;
if(LeftChildB(ind, binstablo)==-1){
binstablo->elmnti[x].vrij=vrij;
binstablo->elmnti[x].juzd=true;
}
else{
cout<<"Vec postoji lijevo dijete."<<endl;
}
}
chvor CreateRightB(int vrij, chvor ind, binstab *binstablo){
int x=(ind*2)+2;
if(RightChildB(ind, binstablo)==-1){
binstablo->elmnti[x].vrij=vrij;
binstablo->elmnti[x].juzd=true;
}
else{
cout<<"Vec postoji desno dijete."<<endl;
}
}
int LabelB(chvor ind, binstab *binstablo){
if(binstablo->elmnti[ind].juzd==true) return binstablo->elmnti[ind].vrij;
else{
cout<<"Ovaj cvor nema vrijednost."<<endl;
}
}
void ChangeLabelB(int vrij, chvor ind, binstab *binstablo){
if(binstablo->elmnti[ind].juzd==true){
binstablo->elmnti[ind].vrij=vrij;
}
else{
cout<<"Ovaj cvor nema vrijednost."<<endl;
}
}
void DeleteB(chvor ind, binstab *binstablo){
if(binstablo->elmnti[(ind*2)+1].juzd==true){
DeleteB((ind*2)+1, binstablo);
}
if(binstablo->elmnti[(ind*2)+2].juzd==true){
DeleteB((ind*2)+2, binstablo);
}
binstablo->elmnti[ind].juzd=false;
}struct elmnt {
int vrij;
struct elmnt *left,*right;
};
typedef struct elmnt *chvor;
typedef struct elmnt *binstablo;
void InitB(int vrij, binstablo B){
chvor nuevo;
nuevo= new elmnt;
nuevo->vrij=vrij;
nuevo->left=NULL;
nuevo->right=NULL;
B=nuevo;
}
chvor RootB(binstablo B){
if(B==NULL) cout<<"Nema korijena stabla."<<endl;
return B;
}
chvor LeftChildB(chvor C, binstablo B){
return C->left;
}
chvor RightChildB(chvor C, binstablo B){
return C->right;
}
chvor ParentB(chvor C, binstablo B){
if(C==B) return NULL;
chvor starci;
if(B->left!=NULL){
if(B->left==C) return B->left;
starci=ParentB(C,B->left);
}
if(B->right!=NULL){
if(B->right==C) return B->right;
starci=ParentB(C,B->right);
}
return starci;
}
void CreateLeftB(int vrij, chvor C, binstablo B){
chvor nuevo;
nuevo = new elmnt;
if(LeftChildB(C, B)) cout<<"Vec postoji lijevo dijete."<<endl;
else{
nuevo->vrij=vrij;
nuevo->left=NULL;
nuevo->right= NULL;
C->left=nuevo;
}
}
void CreateRightB(int vrij, chvor C, binstablo B){
chvor nuevo;
nuevo= new elmnt;
if(RightChildB(C, B)) cout<<"Vec postoji desno dijete."<<endl;
else{
nuevo->vrij=vrij;
nuevo->left=NULL;
nuevo->right=NULL;
C->right=nuevo;
}
}
int LabelB(chvor C, binstablo B){
if(C==NULL){
cout<<"Nepostojeci cvor."<<endl;
return -1;
}
return B->vrij;
}
void ChangeLabelB(int vrij, chvor C, binstablo B){
if(C==NULL) cout<<"Nepostojeci cvor."<<endl;
else{
B->vrij=vrij;
}
}
void DeleteB(chvor C, binstablo B){
if (C->left!=NULL) DeleteB(C->left, B);
if (C->right!=NULL) DeleteB(C->right, B);
delete C;
}First / Previous / Next / Last / Page 1 of 1 (2 posteets)