#include <iostream>
using namespace std;
struct element {
int label;
int used;
};
struct bt {
struct element elements[10000];
};
typedef struct bt btree;
typedef int node;
bool polje=true;
void InitB(int x, btree *BT) {
BT->elements[1].label=x;
BT->elements[1].used=1;
}
int SearchB(int n, btree *BT) {
return n;
}
void CreateLeftB(int x, int n, btree *BT) {
if (BT->elements[n].used==0) {
cout<<"\nNe postoji cvor!\n";
return;
}
if (BT->elements[2*n].used==1) {
cout<<"\nPostoji dijete!\n";
return;
}
BT->elements[2*n].used=1;
BT->elements[2*n].label=x;
};
void CreateRightB(int x, int n, btree *BT) {
if (BT->elements[n].used==0) cout<<"\nNe postoji cvor!\n";
else {
if (BT->elements[2*n+1].used==1) cout<<"\nPostoji dijete!\n";
else {
BT->elements[2*n+1].label=x;
BT->elements[2*n+1].used=1;
}
}
};
element *LeftChildB(int n, btree *BT) {
if (BT->elements[n].used==0) cout<<"\nNe postoji cvor!\n";
if (BT->elements[2*n].used==0) cout<<"\nNe postoji dijete!\n";
else {
element *ispis=new element;
ispis->label=BT->elements[2*n].label;
return ispis;
}
}
element *RightChildB(int n, btree *BT) {
if (BT->elements[n].used==0) cout<<"\nNe postoji cvor!\n";
if (BT->elements[2*n+1].used==0) cout<<"\nNe postoji dijete!\n";
else {
element *ispis=new element;
ispis->label=BT->elements[2*n+1].label;
return ispis;
}
}
element RootB(btree *BT) {
return BT->elements[1];
}
element *ParentB(int n, btree *BT) {
if (n<=1) cout<<"\nKorijen nema roditelja!\n";
else {
n/=2;
element *roditelj=new element;
roditelj->label=BT->elements[n].label;
roditelj->used=BT->elements[n].used;
if (roditelj->used==0) cout<<"\nNe postoji roditelj!\n";
else return roditelj;
}
}
int LabelB(int n, btree *BT) {
if (!BT->elements[n].used) cout<<"\nNe postoji cvor "<<n<<"!\n";
else return BT->elements[n].label;
}
void ChangeLabelB(int x, int n, btree *BT) {
if (!BT->elements[n].used) cout<<"\nNe postoji uneseni cvor!\n";
else BT->elements[n].label=x;
}
void DeleteB(int n, btree *BT) {
BT->elements[n].used=0;
BT->elements[n].label=-1;
if(BT->elements[2*n].used) DeleteB(2*n,BT);
if(BT->elements[2*n+1].used)DeleteB(2*n+1,BT);
}