#include<iostream.h>
struct element {
int vrijednost;
struct elem *L,*D;
};
typedef struct elem *cv;
typedef struct elem *bs;
void InitI(int v, bs I){
cv novi;
novi= new elem;
novi->v=v;
novi->L=NULL;
novi->D=NULL;
I=novi;
};//InitI
cv LeftChildI(cv C, bs I){
return C->L;
};//LeftChild
cv RightChildI(cv C, bs I){
return C->D;
};//RightChild
cv ParentI(cv C, bs I){
if(C==I) return NULL;
cv r;
if(I->L!=NULL){
if(I->L==C) return I->L;
r=ParentB(C,I->L);
}
if(I->D!=NULL){
if(I->D==C) return I->D;
r=ParentI(C,I->D);
}
return r;
};//ParentI
void CreateLeftI(int v, cv C, bs I){
cv novi;
novi = new elem;
if(LeftChildI(C, I)) cout<<"Cvor ima lijevo dijete."<<endl;
else{
novi->v=v;
novi->L=NULL;
novi->D= NULL;
C->L=novi;
}
};//CreateLeftI
void CreateRightI(int v, cv C, bs I){
cv novi;
novi= new elem;
if(RightChildI(C, I)) cout<<"Cvor ima desno dijete."<<endl;
else{
novi->v=v;
novi->L=NULL;
novi->D=NULL;
C->D=novi;
}
};//CreateRightI
int LabelI(cv C, bs I){
if(C==NULL){
cout<<"Cvor ne postoji."<<endl;
return -1;
}
return I->v;
};//LabelI
void ChangeLabelI(int v, cv C, bs I){
if(C==NULL) cout<<"Cvor ne postoji."<<endl;
else{
I->v=v;
}
};//ChangeLabelI
void DeleteI(cv C, bs I){
if (C->L != NULL) DeleteI(C->L, I);
if (C->D != NULL) DeleteI(C->D, I);
delete C;
};//DeleteI
//takoder je slican ostalima, jer se nema tu puno sto za mijenjati, jedino sto koristim drugacije oznake i drugaciji redoslijed