Return to Snippet

Revision: 65701
at January 12, 2014 10:30 by atatlikon


Initial Code
using namespace std;
struct btree {
       char oznaka;
       btree *lijevo, *desno;
};
typedef struct btree *element;

element postoji(char oznaka, btree *B){
        btree *PL=B;
        btree *PD=B;
        if(oznaka==B->oznaka) return B;
        else{
             if(B->lijevo) PL=postoji(oznaka, B->lijevo);
             if(B->desno) PD=postoji(oznaka, B->desno); 
             }
        if(PL)
              if(oznaka==PL->oznaka)  return PL;
        if(PD)
              if(oznaka==PD->oznaka)  return PD;
        else return NULL;
}
btree *LeftChildB(btree *n, btree *B){
    return n->lijevo;
}

btree *RightChildB(btree *n, btree *B){
    return n->desno;
}
void CreateLeftB(char x, btree *n, btree *B){
    if (n->lijevo) cout << "Taj cvor vec ima lijevo dijete!" << endl;
    else{
        n->lijevo = new btree;
        n->lijevo->oznaka=x;
        n->lijevo->lijevo=NULL;
        n->lijevo->desno=NULL;
    }
}
void ChangeLabelB(char x, btree *n, btree *B){
    n->oznaka=x;
}
void CreateRightB(char x, btree *n, btree *B){
    if (n->desno) cout << "Taj cvor vec ima desno dijete!" << endl;
    else{
        n->desno = new btree;
        n->desno->oznaka=x;
        n->desno->lijevo=NULL;
        n->desno->desno=NULL;
    }
}
char LabelB(btree *n, btree *B){
    return n->oznaka;
}
btree *ParentB(btree *n, btree *B){
    static btree *cvor;
    static bool nadjen=false;
    if (B->lijevo==n || B->desno==n){
        nadjen=true;
        cvor=B;
    }
    if (nadjen) return cvor;
    if (B->lijevo) ParentB(n,B->lijevo);
    if (B->desno) ParentB(n,B->desno);
}
btree *RootB(btree *B){
    return B;
}
void DeleteB(btree *n, btree *B){
    btree *roditelj = ParentB(n,B);
    if (roditelj->lijevo==n) roditelj->lijevo=NULL;
    else roditelj->desno=NULL;

    if (n->lijevo) DeleteB(n->lijevo,B);
    if (n->desno) DeleteB(n->desno,B);
    delete n;

}
btree *InitB(int x, btree *B){
    B=new btree;
    B->lijevo=NULL;
    B->desno=NULL;
    B->oznaka=x;
    return B;
}

Initial URL


Initial Description
SP 4 ZADATAK

Initial Title
bin_stablo_pokazivac

Initial Tags


Initial Language
C++