binarno_stablo_polje.h





0
Date Submitted Wed. Jan. 4th, 2012 8:10 PM
Revision 1 of 1
Helper Vedran
Tags strukture
Comments 0 comments
Vedran Vađunec


#include <iostream>

using namespace std;

struct tstablo{
  int oznaka;
  bool iskoristen;     
};

struct drvo{
  tstablo stablo[1000];     
};

int ParentB(int dijete, drvo *stablo){
    if(dijete==1) return 0;
    return dijete/2;
}

int LeftChildB(int dijete, drvo *stablo){
 return dijete*2;   
}

int RightChildB(int dijete, drvo *stablo){
 return dijete*2+1;   
}

int LabelB(int oznaka, drvo *stablo){
    return stablo->stablo[oznaka].oznaka;
}

void ChangeLabelB(int x, int oznaka, drvo *stablo){
 stablo->stablo[oznaka].oznaka=x;     
}

int RootB(drvo *stablo){
 return 1;   
}

void CreateLeftB(int x, int oznaka, drvo *stablo){
 if(stablo->stablo[oznaka*2].iskoristen==true)
                                               cout<<"Dijete vec postoji"<<endl;
 else{
      stablo->stablo[oznaka*2].oznaka=x;
      stablo->stablo[oznaka*2].iskoristen=true;
 }     
}

void CreateRightB(int x, int oznaka, drvo *stablo){
 if(stablo->stablo[oznaka*2+1].iskoristen==true)
                                                 cout<<"Dijete vec postoji"<<endl;
 else{
      stablo->stablo[oznaka*2+1].oznaka=x;
      stablo->stablo[oznaka*2+1].iskoristen=true;
 }
}

void DeleteB(int n, drvo *stablo){
    if(stablo->stablo[n].iskoristen==1){
        if (stablo->stablo[n*2].iskoristen==1)
           DeleteB(n*2, stablo);
        if (stablo->stablo[n*2+1].iskoristen==1)
           DeleteB(n*2+1, stablo);
        stablo->stablo[n].iskoristen=0;
        stablo->stablo[n].oznaka=0;
    }
    else
        cout<<"Uneseni cvor ne postoji"<<endl;
}

drvo *InitB(int oznaka, drvo *stablo){
 if(stablo) delete stablo;
            stablo=new drvo;
 for(int x=0;x<1000;x++){
  stablo->stablo[x].iskoristen=false;       
 } 
   
 stablo->stablo[1].oznaka=oznaka;
 stablo->stablo[1].iskoristen=true;
 return stablo;
}

int NodeB(int br, drvo *stablo){
        for(int i=0;i<1000;i++){
                if(stablo->stablo[i].oznaka==br)
                                                 return i;       
        }
        cout<<"Uneseni cvor ne postoji"<<endl;
        return 1;
}

 

Vedran Vadunec

Comments

There are currently no comments for this snippet.

Voting

Votes Up


Votes Down