/ Published in: C++
                    
                                        
                            
                                Expand |
                                Embed | Plain Text
                            
                        
                        Copy this code and paste it in your HTML
struct tcvor {
int oznaka;
bool koristen;
};
struct tstablo {
struct tcvor polje[10000];
};
int ParentB (int i, tstablo *stablo){
if (i == 1) return -1;
if (stablo->polje[i].koristen){
if (stablo->polje[i*2].koristen || stablo->polje[i*2+1].koristen)
return i/2;
}
};
int LeftChildB (int i, tstablo *stablo){
if (stablo->polje[i*2].koristen) return i*2;
if (!stablo->polje[i*2].koristen) return -1;
};
int RightChildB (int i, tstablo *stablo){
if (stablo->polje[i*2+1].koristen) return i*2+1;
if (!stablo->polje[i*2+1].koristen)return -1;
};
int LabelB (int i, tstablo *stablo){
if (stablo->polje[i].koristen && stablo->polje[i].oznaka >= 0)
return stablo->polje[i].oznaka;
if (!stablo->polje[i].koristen)
return 0;
};
void ChangeLabelB (int oznaka, int i, tstablo *stablo){
if (oznaka%2 == 0){
if (stablo->polje[i*2].koristen)
stablo->polje[i*2].oznaka = oznaka;
}
else {
if (stablo->polje[i*2+1].koristen)
stablo->polje[i*2+1].oznaka = oznaka;
}
};
int RootB (tstablo *stablo){
if (stablo->polje[1]) return 1;
else return -1;
};
void CreateLeftB (int oznaka, int i, tstablo *stablo){
if (LeftChildB (i,stablo) == -1 || (!stablo->polje[i*2].koristen)){
stablo->polje[i*2].oznaka = oznaka;
stablo->polje[i*2].koristen = true;
};
void CreateRightB (int oznaka, int i, tstablo *stablo){
if (RightChildB (i,stablo) == -1 || (!stablo->polje[i*2+1].koristen)){
stablo->polje[i*2+1].oznaka = oznaka;
stablo->polje[i*2+1].koristen = true;
}
};
void DeleteB (int i, tstablo *stablo){
if (stablo->polje[i*2].koristen){
DeleteB (polje[i*2], stablo);
stablo->polje[i*2].koristen = false;
}
if (stablo->polje[i*2+1].koristen){
DeleteB (polje[i*2+1], stablo);
stablo->polje[i*2+1].koristen = false;
}
if (stablo->polje[1].koristen){
DeleteB(polje[1],stablo);
stablo->polje[1].koristen = false;
}
};
void InitB (int korijen, tstablo *stablo){
do{
DeleteB (polje[i*2], stablo);
DeleteB (polje[i*2+1], stablo);
}while (i != 1);
stablo->polje[1].oznaka = korijen;
stablo->polje[1].koristen = true;
};
Comments
 Subscribe to comments
                    Subscribe to comments
                
                