# Posted By

dafilipaj on 01/06/11

# Statistics

Viewed 332 times
Favorited by 0 user(s)

# bstablo_polje.h

/ Published in: C++
`struct element{       int label;       int koristeno;};struct bt{       element elements[10000];};typedef int cvor; bt* InitB(int x, bt* T){    if(T) delete T;    T = new bt;    for(int i = 0; i < 10000; i++)        T->elements[i].koristeno = 0;    T->elements[1].label = x;    T->elements[1].koristeno = 1;     return T;}//initB void CreateLeftB(int x, cvor n, bt* T){     if(T->elements[n].koristeno == 0 || T->elements[2*n].koristeno == 1) {           cout << "Greska" << endl << endl;           return;     }     T->elements[2*n].koristeno = 1;     T->elements[2*n].label = x;}//CreateLeftB void CreateRightB(int x, cvor n, bt* T){        if(T->elements[n].koristeno == 0 || T->elements[2*n+1].koristeno == 1){        cout << "Greska" << endl << endl;        return;    }    T->elements[2*n+1].koristeno = 1;    T->elements[2*n+1].label = x;}//CreateRightB cvor LeftChildB(cvor n, bt* T){     if(T->elements[n].koristeno == 0)            return 0;     if(T->elements[2*n].koristeno == 1)            return 2*n;     else return 0;}//LeftCildB cvor RightChildB(cvor n, bt* T){     if(T->elements[n].koristeno == 0) return 0;     if(T->elements[2*n+1].koristeno == 1) return 2*n+1;     else return 0;}//RightCildB cvor ParentB(cvor n, bt* T){     if(n == 1) return 0;     if(n%2) n--;     return n/2;}//ParentB int LabelB(cvor n, bt* T){          return T->elements[n].label;}//LabelB void ChangeLabelB(int x, cvor n, bt* T){     if(T->elements[n].koristeno == 0) return;     T->elements[n].label = x;}//ChangeLabelB cvor RootB(bt* T){     if(T->elements[1].koristeno == 0) return 0;     return 1;}//RootB void DeleteB(cvor n, bt* T){    T->elements[n].koristeno = 0;        if (LeftChildB(n, T)) DeleteB(LeftChildB(n, T), T);        if (RightChildB(n, T)) DeleteB(RightChildB(n, T), T);}//DeleteB`