Return to Snippet

Revision: 68514
at January 19, 2015 07:36 by akljaic


Initial Code
#include <iostream>
using namespace std;

struct bt{
       char label;
       bool used;
};

struct btree{
       bt element[1000];
};
typedef struct btree element;

bool ExistLeftChild(int n, btree *T){
     if(T->element[2*n].used) return true;
     return false;
}

bool ExistRightChild(int n, btree *T){
     if(T->element[2*n+1].used) return true;
     return false;
}

int ParentB(int n, btree *T){
    if(T->element[1].label == n) return -1;
    if(n%2) return n/2+1;
    else return n/2;
}

int LeftChildB(int n, btree *T){
    if(T->element[n*2].used) return n*2;
    else return -1;
}

int RightChildB(int n, btree *T){
    if(T->element[n*2+1].used) return n*2+1;
    else return -1;
}

int LabelB(int n, btree *T){
     return T->element[n].label;
}

void ChangeLabelB(int x, int n, btree *T){
     T->element[n].label = x;
}

int RootB(btree *T){
    return T->element[1].label;
}

void DeleteB(int n, btree *T){
     if(LeftChildB(n,T) != -1) DeleteB(LeftChildB(n,T),T);
     if(RightChildB(n,T) != -1) DeleteB(RightChildB(n,T),T);
     T->element[n].used = false;
}

btree *InitB(int x, btree *T){
   T = new btree;
   for (int i=2; i<1000; i++)
       T->element[i].used = false;
   T->element[1].label = x;
   T->element[1].used = true;
   return T;
}

void CreateLeftB(int x, int n, btree *T){
    if (T->element[n*2].used) cout << "Ima vec lijevo dijete!" << endl;
    else{
        T->element[n*2].label = x;
        T->element[n*2].used = true;
    }
}
void CreateRightB(int x, int n, btree *T){
    if (T->element[n*2+1].used) cout << "Ima vec desno dijete!" << endl;
    else{
        T->element[n*2+1].label = x;
        T->element[n*2+1].used = true;
    }
}

Initial URL
asdf

Initial Description
asdf

Initial Title
binarno_polje.h

Initial Tags


Initial Language
C++