Revision: 38500
                            
                                                            
                                    
                                        
Initial Code
                                    
                                    
                                                            
                                    
                                        
Initial URL
                                    
                                    
                                
                                                            
                                    
                                        
Initial Description
                                    
                                    
                                
                                                            
                                    
                                        
Initial Title
                                    
                                    
                                                            
                                    
                                        
Initial Tags
                                    
                                    
                                
                                                            
                                    
                                        
Initial Language
                                    
                                    
                                                    
                        at January 4, 2011 08:11 by nihorvati1
                            
                            Initial Code
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;
};
                                Initial URL
Initial Description
Initial Title
implementacija binarnog stabla pomoću polja
Initial Tags
Initial Language
C++