Revision: 68551
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 19, 2015 09:20 by marfioren
Initial Code
struct belement {
int v;
bool u;
};
struct bstablo {
belement elems[10000];
};
typedef bstablo* binStablo;
typedef int binNode;
binStablo InitB(int x, binStablo t) {
t = new bstablo;
t->elems[0].u=0;
for(int i=2; i<10000; i++)
t->elems[i].u=0;
t->elems[1].v = x;
t->elems[1].u = 1;
return t;
}
binNode RootB(binStablo t) {
return 1;
}
binNode ParentB(binNode n, binStablo t) {
if(n==RootB(t))
return 0;
else return n/2;
}
binNode LeftChildB(binNode n, binStablo t) {
if(t->elems[n*2].u==0)
return 0;
else return n*2;
}
binNode RightChildB(binNode n, binStablo t) {
if(t->elems[n*2+1].u==0)
return 0;
else return n*2+1;
}
int LabelB(binNode n, binStablo t) {
int label=t->elems[n].v;
return label;
}
void ChangeLabelB(int x, binNode n, binStablo t) {
if(n>=0 && n<10000)
t->elems[n].v = x;
}
void CreateLeftB(int x, binNode n, binStablo t) {
if(n<0 || n>10000) return;
if(t->elems[n*2].u)
return;
t->elems[n*2].v = x;
t->elems[n*2].u = 1;
}
void CreateRightB(int x, binNode n, binStablo t) {
if(n<0 || n>10000) return;
if(t->elems[n*2+1].u)
return;
t->elems[n*2+1].v = x;
t->elems[n*2+1].u = 1;
}
void DeleteB(binNode n, binStablo t) {
if(n==1)return;
if(n>=10000)return;
if(t->elems[n*2].u)
DeleteB(n*2, t);
if(t->elems[n*2+1].u)
DeleteB(n*2+1, t);
t->elems[n].u = 0;
}
Initial URL
Initial Description
binarno stablo_polja
Initial Title
binarno stablo_polja
Initial Tags
Initial Language
C++