Return to Snippet

Revision: 68460
at January 19, 2015 02:36 by mateocindric


Initial Code
#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;
}

Initial URL


Initial Description
bstablo_pokazivac.h

Initial Title
bstablo_pokazivac.h

Initial Tags


Initial Language
C++