Return to Snippet

Revision: 39143
at January 14, 2011 01:42 by sejstefic


Initial Code
#include<iostream>
using namespace std;
struct elem {
	int label;
	int used;
}; 

struct bintree {
	elem elements[1000];	
};

typedef struct bintree *bs;
typedef int node;

node ParentB(node c,bintree *bs) {
	
	if (c=1) return(-1);	
	else 
		return((int)c/2);
}
node LeftChildB(node c,bintree *bs) {
	if (bs->elements[2*c].used)
		return(2*c);
	else {
		return(-1);
	}
}
node RightChildB(node c,bintree *bs) {
	if (bs->elements[2*c+1].used)
		return(2*c+1);
	else {
		return(-1);
	}
}
node RootB(bintree *bs) {
	return(1);
}
void DeleteB(node c,bintree *bs) {
	if(bs->elements[(c*2)+1].used==true){
         DeleteB((c*2)+1, bs);
	     }
	     if(bs->elements[(c*2)+2].used==true){
	        DeleteB((c*2)+2, bs);
	     }
	     
	     bs->elements[c].used=false;
	}
	
typedef int labeltype;
labeltype LabelB(node c,bintree *bs) {
	return(bs->elements[c].label);
}
void ChangeLabelB(labeltype x, node c,bintree *bs) {
	if (bs->elements[c].used) 
		bs->elements[c].label = x;
	else {
		cout<<"Trazeni cvor u stablu nema vrijednost."<<endl;
	}
}
void CreateLeftB(labeltype x,node c,bintree *bs) {
	if (bs->elements[2*c].used) {
		cout<<"Cvor ima lijevo dijete"<<endl;
	}
	else {
		bs->elements[2*c].used = -1;
		bs->elements[2*c].label = x;
	}
}
void CreateRightB(labeltype x,node c,bintree *bs) {
	if (bs->elements[2*c+1].used) {
		cout<<"Cvor ima desno dijete"<<endl;
	}
	else {
		bs->elements[2*c+1].used = -1;
		bs->elements[2*c+1].label = x;
	}
}
void InitB(node n,bintree *bs) {
	int i;
	for (i=0;i<=999;i++)
		bs->elements[i].label=-1;
	    bs->elements[1].label=n;
        bs->elements[1].used=-1;
}

Initial URL


Initial Description


Initial Title
Implementacija binarnog stabla pomocu polja

Initial Tags


Initial Language
C++