Return to Snippet

Revision: 38486
at January 4, 2011 04:05 by kokotec


Initial Code
struct telement{
       int oznaka, korijen;
       telement *lijevi, *desni;
};

typedef struct telement *tcvor;
typedef struct telement *tstablo;

tcvor LeftChildB (tcvor cvor, tstablo stablo){
      if (cvor->lijevi != NULL)
         return cvor->lijevi;
      if (cvor->lijevi == NULL)
         cout<<"Greška, nema lijevog djeteta"<<endl;
};

tcvor RightChildB (tcvor cvor, tstablo stablo){
    if (cvor->desni != NULL)
       return cvor->desni;
    if (cvor->desni == NULL)
       cout<<"Greška, nema desnog djeteta"<<endl;
};   

tcvor ParentB (tcvor cvor, tstablo stablo){
      tcvor par;
      
      if (LeftChildB(cvor, stablo)){
         if (stablo->lijevi == cvor) return stablo->lijevi;
         par = ParentB (cvor, stablo->lijevi);
      }
      if (RightChildB(cvor, stablo)){
        if (stablo->desni == cvor) return stablo->desni;
        par = ParentB(cvor, stablo->desni);
     }   
    return par;
};
       
tcvor RootB (tstablo stablo){
    if (stablo) return stablo;
    else
       cout<<"Greška"<<endl;
};
       
int LabelB (tcvor cvor, tstablo stablo){
    if(RootB (stablo)){
    return cvor->oznaka;
}
    else
        cout<<"Greška..."<<endl;

};
   
void ChangeLabelB (int oznaka, tcvor cvor, tstablo stablo){
     if (!RootB (stablo))
        cout << "Cvor ne postoji, pa mu se ne moze promijeniti oznaka!!!" << endl;
     else
         stablo->oznaka = oznaka;
};

void CreateLeftB (int oznaka, tcvor cvor, tstablo stablo){
     tcvor novi = new telement;
     if (LeftChildB(cvor, stablo)){ 
     cout<<"Lijevo dijete vec postoji..."<<endl;
     return;
     }
     else{
          novi->oznaka = oznaka;
          novi->lijevi = NULL;
          novi->desni = NULL;
          cvor->lijevi = novi;   
     }
};
     
void CreateRightB (int oznaka, tcvor cvor, tstablo stablo){
     tcvor novi = new telement;
     if (RightChildB(cvor, stablo)){
     cout<<"Desno dijete vec postoji..."<<endl;
     return;
     }
     else{
          novi->oznaka = oznaka;
          novi->lijevi = NULL;
          novi->desni = NULL;
          cvor->desni = novi;
     }
}; 

void DeleteB (tcvor cvor, tstablo stablo){
     if (LeftChildB (cvor, stablo)) DeleteB (cvor->lijevi, stablo);
     if (RightChildB (cvor, stablo) ) DeleteB (cvor->desni, stablo);
     delete cvor;
};     
                             
void InitB (int korijen, tstablo stablo){
     tcvor novi = new telement;
     novi->korijen = korijen;
     novi->lijevi = NULL;
     novi->desni = NULL;
     stablo = novi;
};

Initial URL

                                

Initial Description

                                

Initial Title
bstablo_pokazivac

Initial Tags
c++

Initial Language
C++