Revision: 65712
at January 12, 2014 22:28 by Dragana_Mlikota

Initial Code
```#define ARRAY_SIZE 10000

typedef int labeltype;

struct element{
labeltype label;
int used;
};

struct bt{
struct element elements[ARRAY_SIZE];
};

typedef struct bt * btree;
typedef int bnode;

bool testExistB(bnode n, btree T){
if (n==-1) return false;
if (T->elements[n].used) return true;
return false;
}

bnode ParentB(bnode n, btree T){
if (n%2==0) return n/2;
return (n-1)/2;
}

bnode LeftChildB(bnode n, btree T){
if (T->elements[n*2].used) return n*2;
return T->elements[0].label;
}

bnode RightChildB(bnode n, btree T){
if (T->elements[n*2+1].used) return n*2+1;
return T->elements[0].label;
}

labeltype LabelB(bnode n, btree T){
return T->elements[n].label;
}

void ChangeLabelB(labeltype x, bnode n, btree T){
T->elements[n].label = x;
}

bnode RootB(btree T){
if (T->elements[1].used) return 1;
return T->elements[0].label;
}

void CreateLeftB(labeltype x, bnode n, btree T){
if (!T->elements[n*2].used) {
T->elements[n*2].used = 1;
T->elements[n*2].label = x;
}
else cout << "Nije moguce stvoriti cvor, cvor je vec zauzet\n";
}

void CreateRightB(labeltype x, bnode n, btree T){
if (!T->elements[n*2+1].used) {
T->elements[n*2+1].used = 1;
T->elements[n*2+1].label = x;
}
else cout << "Nije moguce stvoriti cvor, cvor je vec zauzet\n";
}

void DeleteB(bnode n, btree T){
if (T->elements[LeftChildB(n, T)].used) DeleteB(LeftChildB(n, T), T);
if (T->elements[RightChildB(n, T)].used) DeleteB(RightChildB(n, T), T);
T->elements[n].used = 0;

}

btree InitB(labeltype x, btree T){
T = new bt;
T->elements[1].label = x;
T->elements[1].used = 1;
T->elements[0].label = -1;
T->elements[0].used = 1;
for (int i=2; i<ARRAY_SIZE; i++) T->elements[i].used = 0;
return T;
}```

Initial URL

Initial Description
`binarno stablo header polje`

Initial Title
`BinTree_array.h`

Initial Tags
`header`

Initial Language
`C++`