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;
}