Return to Snippet

Revision: 68454
at January 19, 2015 02:10 by zeleee


Initial Code
#include<iostream>
using namespace std;

struct telement{
	int oznaka,dijete,brat;
};
struct tstablo{
	telement polje[1000];
	int korijen;
};
typedef int node;
typedef tstablo* tree;

void initT(node x, tree stablo){
	for(int i=0;i<1000;i++){
		stablo->polje[i].oznaka=0;
		stablo->polje[i].dijete=-1;
		stablo->polje[i].brat=-1;
	}
	stablo->polje[x].oznaka=6;
	stablo->korijen=x;
}
int parentT(node n,tree stablo){
	if(n==stablo->korijen) {
		cout<<"Korijen ne moze imati roditelja!"<<endl;
		return -1;
	}
	for(int i=0;i<1000;i++){
		if(stablo->polje[i].dijete==n) return i;
		if(stablo->polje[i].brat==n) return parentT(i,stablo); 
	}

}
node firstchildT(node n,tree stablo){
	return stablo->polje[n].dijete;
}
node nextsiblingT(node n,tree stablo){
	return stablo->polje[n].brat;
}
node labelT(node n, tree stablo ){
	return stablo->polje[n].oznaka;
}
int rootT(tree stablo){
	return stablo->korijen;
}
void createT(node x,node n,tree stablo){
	if(!stablo->polje[n].oznaka){
		cout<<"Cvor ne postoji!"<<endl;
		return;
	}
	if(stablo->polje[n].dijete==-1) {
		stablo->polje[n].dijete=x;
	}
	else{ 
			n=stablo->polje[n].dijete; 	
			while(stablo->polje[n].brat!=-1) n=stablo->polje[n].brat;
			stablo->polje[n].brat=x;			
	} 
	stablo->polje[x].brat=-1;
	stablo->polje[x].dijete=-1;
	stablo->polje[x].oznaka=x*3;
}
void changelabelT(int x,node n, tree stablo){
	stablo->polje[n].oznaka=x;
}
void deleteT(node n,tree stablo){
	if(firstchildT(n,stablo)!=-1) deleteT(stablo->polje[n].dijete,stablo); 
	if(nextsiblingT(n,stablo)!=-1) deleteT(stablo->polje[n].brat,stablo);
	stablo->polje[n].brat=-1;
	stablo->polje[n].dijete=-1;
	changelabelT(0,n,stablo);	
}

Initial URL


Initial Description
2

Initial Title
Prvo dijete sljedeci brat

Initial Tags


Initial Language
C++