Revision: 39176
at January 14, 2011 05:31 by majugurci

Initial Code
```#include <iostream>

using namespace std;

struct element {
int label;
int used;
};

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

typedef struct bt *btree;
typedef int node;

node ParentB (node n, btree T) {
if (n<2) {
cout << "Greska!" << endl;
return 0;
}
else if (n%2==0) return n/2;
else return n/2-1;
}

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

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

int LabelB (node n, btree T) {
if (T->elements[n].used==0) {
cout << "Greska!" << endl;
return 0;
}
else return T->elements[n].label;
}

void ChangeLabelB (int x, node n, btree T) {
if (T->elements[n].used==0) {
cout << "Greska!" << endl;
return;
}
else T->elements[n].label=x;
}

node RooTB (btree T) {
if (T->elements[1].used==0) {
cout << "Greska!" << endl;
return 0;
}
else return 1;
}

void CreateLeftB (int x, node n, btree T) {
if (T->elements[2*n].used==1 || T->elements[n].used==0) {
cout << "Greska!" << endl;
return;
}
T->elements[2*n].used = 1;
T->elements[2*n].label = x;
}

void CreateRightB (int x, node n, btree T) {
if (T->elements[2*n+1].used==1 || T->elements[n].used==0) {
cout << "Greska!" << endl;
return;
}
T->elements[2*n+1].used = 1;
T->elements[2*n+1].label = x;
}

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

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

Initial URL

Initial Description

Initial Title
`binarno stablo polje`

Initial Tags

Initial Language
`C++`