Revision: 65701
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
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++