/ Published in: C++
bstablo_pokazivac.h
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> using namespace std; struct element{ int oznaka; element *lijevi, *desni; }; typedef element* el; element *b_stablo=new element; element *pomoc; void Initb(int x, element *b_stablo){ b_stablo->oznaka=x; b_stablo->lijevi=NULL; b_stablo->desni=NULL; } element *Parentb(element *trazi, element *b_stablo){ element *a=NULL, *b=NULL; if(b_stablo->lijevi==trazi || b_stablo->desni==trazi) return b_stablo; if(b_stablo->lijevi!=NULL) a=Parentb(trazi, b_stablo->lijevi); if(b_stablo->desni!=NULL) b=Parentb(trazi, b_stablo->desni); if(a!=NULL) return a; if(b!=NULL) return b; return NULL; } element *LeftChildb(element *b_stablo){ return b_stablo->lijevi; } element *RightChildb(element *b_stablo){ return b_stablo->desni; } element *Rootb(element *b_stablo){ return b_stablo; } int Labelb(element *b_stablo){ return b_stablo->oznaka; } void ChangeLabelb(int x, element *b_stablo){ b_stablo->oznaka=x; } bool CreateLeftb(int x, element *b_stablo){ if(LeftChildb(b_stablo)!=NULL) return false; element *novi=new element; b_stablo->lijevi=novi; novi->oznaka=x; novi->lijevi=NULL; novi->desni=NULL; return true; } bool CreateRightb(int x,element *b_stablo){ if(RightChildb(b_stablo)!=NULL) return false; element *novi; novi=new element; novi->oznaka=x; b_stablo->desni=novi; novi->lijevi=NULL; novi->desni=NULL; return true; } void Deleteb(element *cvor,element *b_stablo){ if(cvor->lijevi!=NULL) Deleteb(cvor->lijevi,b_stablo); if(cvor->desni!=NULL) Deleteb(cvor->desni,b_stablo); if(cvor!=Rootb(b_stablo) && LeftChildb(Parentb(cvor, b_stablo))==cvor) Parentb(cvor,b_stablo)->lijevi=NULL; else if(cvor!=Rootb(b_stablo)) Parentb(cvor,b_stablo)->desni=NULL; delete cvor; } element *ALabel(element *b_stablo, int x){ if(b_stablo->oznaka==x) return b_stablo; if(b_stablo->lijevi!=NULL) if(ALabel(b_stablo->lijevi,x)!=NULL) return ALabel(b_stablo->lijevi,x); if(b_stablo->desni!=NULL) if(ALabel(b_stablo->desni,x)!=NULL) return ALabel(b_stablo->desni,x); return NULL; }