/ Published in: C++
Biblioteka sa funkcijama za rad sa binarnim stablom realizirano preko pokazivaÄa
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> using namespace std; struct bStabloStrukt {//stablo ^^ int data; bStabloStrukt *L,*D; bStabloStrukt():L(NULL),D(NULL){} }; typedef bStabloStrukt* elem; typedef bStabloStrukt* cvorStrukt; typedef bStabloStrukt* cvor; cvorStrukt ParentB(elem trazi, bStabloStrukt *binStablo){ static elem pamti; static elem glava=binStablo; if(trazi==glava) return NULL;//ako trazimo roditelja za glavu vracamo nulu odma if(binStablo->L!=NULL) //krecemo se lijevo ParentB(trazi, binStablo->L); if(binStablo->D!=NULL)//krecemo se desno ParentB(trazi, binStablo->D); if(binStablo->D==trazi||binStablo->L==trazi)//ako smo naisli na element pamtimo ga u staticku pamti= binStablo; return pamti;//vracamo staticku kroz sve rek pozive } cvorStrukt LeftChildB(elem trazi, bStabloStrukt *binStablo){ return trazi->L; } cvorStrukt RightChildB(elem trazi, bStabloStrukt *binStablo){ return trazi->D; } int LabelB(elem trazi, bStabloStrukt *binStablo){ return trazi->data; } void ChangeLabelB(int unos, elem trazi, bStabloStrukt *binStablo){ trazi->data=unos; } cvorStrukt RootB(bStabloStrukt *binStablo){ return binStablo; } bool CreateLeftB(int unos, elem trazi, bStabloStrukt *binStablo){ if(trazi==NULL||trazi->L!=NULL) return false; trazi->L=new bStabloStrukt; trazi->L->data=unos; return true; } bool CreateRightB(int unos, elem trazi, bStabloStrukt* binStablo){ if(trazi==NULL||trazi->D!=NULL) return false; trazi->D=new bStabloStrukt; trazi->D->data=unos; return true; } void InitB(int unos, bStabloStrukt *&binStablo){ binStablo=new bStabloStrukt; binStablo->data=unos; } void DeleteB(elem trazi, bStabloStrukt *binStablo){ if(trazi==NULL) return; if(trazi->L!=NULL) DeleteB(trazi->L, binStablo); if(trazi->D!=NULL) DeleteB(trazi->D, binStablo); if(trazi!=RootB(binStablo)&&ParentB(trazi, binStablo)->L==trazi) ParentB(trazi,binStablo)->L=NULL; else if(trazi!=RootB(binStablo)) ParentB(trazi,binStablo)->D=NULL; delete trazi; }