/ Published in: C++
2
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#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); }