/ Published in: C++
SP 4 ZADATAK
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
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; }