/ Published in: C++
Binarno_stablo_polje
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> using namespace std; struct element { int label; bool used; }; struct bt { struct element polje[1000]; }; typedef struct bt* btree; typedef int node; void InitB(int x,btree T){ for(int i=0;i<1000;i++) T->polje[i].used=false; T->polje[1].label = x; T->polje[1].used=true; } int LabelB(node n,btree T){ return T->polje[n].label; } void ChangeLabelB(int x,node n,btree T){ T->polje[n].label=x; } node RootB(btree T){ if (T->polje[1].used) return 1; else return -1; } node ParentB(node n,btree T){ if(n==1) return -1; return n/2; } void CreateLeftB(node x,node n,btree T){ if (!T->polje[n*2].used && T->polje[n].used){ T->polje[n*2].used=true; T->polje[n*2].label=x; } else cout<<"Greska, cvor se nemoze kreirati!"<<endl; } void CreateRightB(int x,node n,btree T){ if (!T->polje[n*2+1].used && T->polje[n].used){ T->polje[n*2+1].used=true; T->polje[n*2+1].label=x; } else cout<<"Greska, cvor se nemoze kreirati!"<<endl; } node LeftChildB(node n,btree T){ if(T->polje[n*2].used) return n*2; else return -1; } node RightChildB(node n,btree T){ if(T->polje[n*2+1].used) return n*2+1; else return -1; } void DeleteB(node n,btree T){ if(LeftChildB(n,T)!=-1) DeleteB(LeftChildB(n,T),T); if(RightChildB(n,T)!=-1) DeleteB(RightChildB(n,T),T); T->polje[n].used = false; } bool ExistRightChild(node n,btree T){ if(T->polje[2*n+1].used) return true; return false; } bool ExistLeftChild(node n,btree T){ if(T->polje[2*n].used) return true; return false; }