Return to Snippet

Revision: 38618
at January 6, 2011 00:50 by vjalsic


Initial Code
#include <iostream>
using namespace std;

struct element{
    bool used;
    int label;
};

struct tstablo
{
    element stablo_polje[1000];
};

int ParentB(int n, tstablo *stablo_polje){
    if (stablo_polje->stablo_polje[n].used==1)
       return (n/2);
    else
        return (-1);
}

int LeftChildB(int n, tstablo *stablo_polje){
    if (stablo_polje->stablo_polje[n].used==1)
       if (stablo_polje->stablo_polje[n*2].used==1)
          return (n*2);
       else
           return (-1);
    else
        return (-1);
}

int RightChildB(int n, tstablo *stablo_polje){
    if (stablo_polje->stablo_polje[n].used==1)
        if (stablo_polje->stablo_polje[n*2+1].used==1)
           return (n*2+1);
        else
            return (-1);
    else
        return (-1);
}

int LabelB(int n, tstablo *stablo_polje){
    if (stablo_polje->stablo_polje[n].used==1)
       return ((int)stablo_polje->stablo_polje[n].label);
    else
        return (-1);
}

void ChangeLabelB(int x, int n, tstablo *stablo_polje){
    if (stablo_polje->stablo_polje[n].used==1)
       stablo_polje->stablo_polje[n].label=x;
    else
        cout<<"Navedeni cvor ne postoji."<<endl;
}

int RootB(tstablo *stablo_polje){
    if (stablo_polje->stablo_polje[1].used==1)
       return 1;
    else
        return (-1);
}

void CreateLeftB(int x, int n, tstablo *stablo_polje){
    if (stablo_polje->stablo_polje[n].used==1)
        if (stablo_polje->stablo_polje[n*2].used!=1){
                   stablo_polje->stablo_polje[n*2].label=x;
                   stablo_polje->stablo_polje[n*2].used=1;
        }
        else
            cout<<"Pogreska! Lijevo dijete je vec kreirano! "<<endl;
    else
        cout<<"Navedeni cvor ne postoji."<<endl;
}

void CreateRightB(int x, int n, tstablo *stablo_polje){
    if (stablo_polje->stablo_polje[n].used==1)
       if (stablo_polje->stablo_polje[n*2+1].used!=1){
               stablo_polje->stablo_polje[n*2+1].label=x;
               stablo_polje->stablo_polje[n*2+1].used=1;
       }
       else
           cout<<"Pogreska! Lijevo dijete je vec kreirano! "<<endl;
    else
        cout<<"Navedeni cvor ne postoji."<<endl;
}

void DeleteB(int n, tstablo *stablo_polje){
    if(stablo_polje->stablo_polje[n].used==1)
    {
        if (stablo_polje->stablo_polje[n*2].used==1)
           DeleteB(n*2, stablo_polje);
        if (stablo_polje->stablo_polje[n*2+1].used==1)
           DeleteB(n*2+1, stablo_polje);
        stablo_polje->stablo_polje[n].used=0;
    }
    else
        cout<<"Navedeni cvor ne postoji."<<endl;
}

void InitB(int x ,tstablo *stablo_polje) {
    stablo_polje->stablo_polje[1].label=x;
    stablo_polje->stablo_polje[1].used=1;
    
    for (int i=2; i<1000; i++)
        stablo_polje->stablo_polje[i].used=0;
}

Initial URL


Initial Description
Implementacija binarnog stabla pomocu polja

Initial Title
Zadatak 4 Implementacija binarnog stabla pomocu polja

Initial Tags
c++

Initial Language
C++