/ Published in: C++
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
struct tcvor { int oznaka; bool koristen; }; struct tstablo { struct tcvor polje[10000]; }; int ParentB (int i, tstablo *stablo){ if (i == 1) return -1; if (stablo->polje[i].koristen){ if (stablo->polje[i*2].koristen || stablo->polje[i*2+1].koristen) return i/2; } }; int LeftChildB (int i, tstablo *stablo){ if (stablo->polje[i*2].koristen) return i*2; if (!stablo->polje[i*2].koristen) return -1; }; int RightChildB (int i, tstablo *stablo){ if (stablo->polje[i*2+1].koristen) return i*2+1; if (!stablo->polje[i*2+1].koristen)return -1; }; int LabelB (int i, tstablo *stablo){ if (stablo->polje[i].koristen && stablo->polje[i].oznaka >= 0) return stablo->polje[i].oznaka; if (!stablo->polje[i].koristen) return 0; }; void ChangeLabelB (int oznaka, int i, tstablo *stablo){ if (oznaka%2 == 0){ if (stablo->polje[i*2].koristen) stablo->polje[i*2].oznaka = oznaka; } else { if (stablo->polje[i*2+1].koristen) stablo->polje[i*2+1].oznaka = oznaka; } }; int RootB (tstablo *stablo){ if (stablo->polje[1]) return 1; else return -1; }; void CreateLeftB (int oznaka, int i, tstablo *stablo){ if (LeftChildB (i,stablo) == -1 || (!stablo->polje[i*2].koristen)){ stablo->polje[i*2].oznaka = oznaka; stablo->polje[i*2].koristen = true; }; void CreateRightB (int oznaka, int i, tstablo *stablo){ if (RightChildB (i,stablo) == -1 || (!stablo->polje[i*2+1].koristen)){ stablo->polje[i*2+1].oznaka = oznaka; stablo->polje[i*2+1].koristen = true; } }; void DeleteB (int i, tstablo *stablo){ if (stablo->polje[i*2].koristen){ DeleteB (polje[i*2], stablo); stablo->polje[i*2].koristen = false; } if (stablo->polje[i*2+1].koristen){ DeleteB (polje[i*2+1], stablo); stablo->polje[i*2+1].koristen = false; } if (stablo->polje[1].koristen){ DeleteB(polje[1],stablo); stablo->polje[1].koristen = false; } }; void InitB (int korijen, tstablo *stablo){ do{ DeleteB (polje[i*2], stablo); DeleteB (polje[i*2+1], stablo); }while (i != 1); stablo->polje[1].oznaka = korijen; stablo->polje[1].koristen = true; };