struct elmnt {
       int vrij;
       bool juzd;
};

struct binstab {
       struct elmnt elmnti[10000];
};

typedef struct binstab *binstablo;
typedef int chvor;

chvor InitB(chvor ruut, binstab *binstablo){
     int i;
     for(i=0; i<10000;i++)
              binstablo->elmnti[i].juzd=false;
     binstablo->elmnti[0].vrij=ruut;
     binstablo->elmnti[0].juzd=true;   
     return 0; 
}

chvor RootB(binstab *binstablo){
     if(binstablo->elmnti[0].juzd==true) return 0;
     else
         return -1;
}

chvor LeftChildB(chvor ind, binstab *binstablo){
     if(binstablo->elmnti[(ind*2)+1].juzd==true) return (ind*2)+1;
     else
         return -1; 
}

chvor RightChildB(chvor ind, binstab *binstablo){
          if(binstablo->elmnti[(ind*2)+2].juzd==true) return (ind*2)+2;
          else
              return -1;
}

chvor ParentB(chvor ind, binstab *binstablo){
          if(ind < 1) return -1;
          if(binstablo->elmnti[int((ind-1)/2)].juzd==true) return int((ind-1)/2);
          else
              return -1;
}

chvor CreateLeftB(int vrij, chvor ind, binstab *binstablo){
     int x=(ind*2)+1;
     if(LeftChildB(ind, binstablo)==-1){
                           binstablo->elmnti[x].vrij=vrij;
                           binstablo->elmnti[x].juzd=true;
     }
     else{
          cout<<"Vec postoji lijevo dijete."<<endl;
     }
}

chvor CreateRightB(int vrij, chvor ind, binstab *binstablo){
          int x=(ind*2)+2;
          if(RightChildB(ind, binstablo)==-1){
                                 binstablo->elmnti[x].vrij=vrij;
                                 binstablo->elmnti[x].juzd=true;                       
          }
          else{
               cout<<"Vec postoji desno dijete."<<endl;
          }
}

int LabelB(chvor ind, binstab *binstablo){
    if(binstablo->elmnti[ind].juzd==true) return binstablo->elmnti[ind].vrij;
    else{
        cout<<"Ovaj cvor nema vrijednost."<<endl;
    }
}

void ChangeLabelB(int vrij, chvor ind, binstab *binstablo){
     if(binstablo->elmnti[ind].juzd==true){
         binstablo->elmnti[ind].vrij=vrij;
     }
     else{
          cout<<"Ovaj cvor nema vrijednost."<<endl;
     }
}

void DeleteB(chvor ind, binstab *binstablo){
     if(binstablo->elmnti[(ind*2)+1].juzd==true){
          DeleteB((ind*2)+1, binstablo);
     }
     if(binstablo->elmnti[(ind*2)+2].juzd==true){
          DeleteB((ind*2)+2, binstablo);
     }
     binstablo->elmnti[ind].juzd=false;
}