Revision: 39176
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
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++