stablo_polje





1
Date Submitted Sun. Jan. 8th, 2012 12:35 PM
Revision 1 of 1
Helper bgrgicak
Tags binarno | binary | stablo | tree
Comments 0 comments
biblioteka za rad sa binarnim stablima, implementacija pomocu polja


#include <iostream>
using namespace std;
struct element {
       int label;
       int used;
       };
struct bt {
       struct element elements[10000];
       };
typedef struct bt btree;
typedef int node;
bool polje=true;

void InitB(int x, btree *BT) {
     BT->elements[1].label=x;
     BT->elements[1].used=1;
     }
int SearchB(int n, btree *BT) {
        return n;
        }
void CreateLeftB(int x, int n, btree *BT) {
     if (BT->elements[n].used==0) {
                                   cout<<"\nNe postoji cvor!\n";
                                   return;
                                   }
     if (BT->elements[2*n].used==1) {
                                     cout<<"\nPostoji dijete!\n";
                                     return;
                                     }
     BT->elements[2*n].used=1;
     BT->elements[2*n].label=x;
     };
void CreateRightB(int x, int n, btree *BT) {
     if (BT->elements[n].used==0) cout<<"\nNe postoji cvor!\n";
     else {
          if (BT->elements[2*n+1].used==1) cout<<"\nPostoji dijete!\n";
          else {
               BT->elements[2*n+1].label=x;
               BT->elements[2*n+1].used=1;
               }
          }
     };
element *LeftChildB(int n, btree *BT) {
        if (BT->elements[n].used==0) cout<<"\nNe postoji cvor!\n";
        if (BT->elements[2*n].used==0) cout<<"\nNe postoji dijete!\n";
        else {
             element *ispis=new element;
             ispis->label=BT->elements[2*n].label;
             return ispis;
             }
        }
element *RightChildB(int n, btree *BT) {
        if (BT->elements[n].used==0) cout<<"\nNe postoji cvor!\n";
        if (BT->elements[2*n+1].used==0) cout<<"\nNe postoji dijete!\n";
        else {
             element *ispis=new element;
             ispis->label=BT->elements[2*n+1].label;
             return ispis;
             }
        }
element RootB(btree *BT) {
        return BT->elements[1];
        }
element *ParentB(int n, btree *BT) {
        if (n<=1) cout<<"\nKorijen nema roditelja!\n";
        else {
             n/=2;
             element *roditelj=new element;
             roditelj->label=BT->elements[n].label;
             roditelj->used=BT->elements[n].used;
             if (roditelj->used==0) cout<<"\nNe postoji roditelj!\n";
             else return roditelj;
             }
        }
int LabelB(int n, btree *BT) {
    if (!BT->elements[n].used) cout<<"\nNe postoji cvor "<<n<<"!\n";
    else return BT->elements[n].label;   
}
void ChangeLabelB(int x, int n, btree *BT) {
    if (!BT->elements[n].used) cout<<"\nNe postoji uneseni cvor!\n";
    else BT->elements[n].label=x;
}
void DeleteB(int n, btree *BT) {
     BT->elements[n].used=0;
     BT->elements[n].label=-1;
     if(BT->elements[2*n].used) DeleteB(2*n,BT);
     if(BT->elements[2*n+1].used)DeleteB(2*n+1,BT);
}


 

berislav grgicak

Comments

There are currently no comments for this snippet.

Voting

Votes Up


Helper bgrgicak

Votes Down