Posted By

zeko868 on 01/20/15


Tagged

binarno stabloimplementacijapolje


Versions (?)

bs_polje.h


 / Published in: C++
 

Implementacija binarnog stabla korištenjem polja

  1. #include <iostream>
  2. using namespace std;
  3. struct telement {
  4. int vrijednost;
  5. bool rabljen;
  6. };
  7. struct tbstablo {
  8. struct telement element[10000];
  9. };
  10.  
  11. int ParentB(int cvor,tbstablo *stablo) {
  12. if (cvor/2!=0)
  13. return cvor/2;
  14. else
  15. return -1;
  16. }
  17. int LeftChildB(int cvor,tbstablo *stablo) {
  18. if (stablo->element[cvor*2].rabljen==true)
  19. return cvor*2;
  20. else
  21. return -1;
  22. }
  23. int RightChildB(int cvor,tbstablo *stablo) {
  24. if (stablo->element[cvor*2+1].rabljen==true)
  25. return cvor*2+1;
  26. else
  27. return -1;
  28. }
  29. int LabelB(int cvor,tbstablo *stablo) {
  30. if (stablo->element[cvor].rabljen==true)
  31. return stablo->element[cvor].vrijednost;
  32. else
  33. return -1;
  34. }
  35. void ChangeLabelB(int nova_vrijednost,int cvor,tbstablo *stablo) {
  36. if (stablo->element[cvor].rabljen==true)
  37. stablo->element[cvor].vrijednost=nova_vrijednost;
  38. }
  39. int RootB(tbstablo *stablo) {
  40. if (stablo->element[1].rabljen==false)
  41. return -1;
  42. else
  43. return 1;
  44. }
  45. void CreateLeftB(int dijete_vrijednost,int cvor,tbstablo *stablo) {
  46. if (stablo->element[cvor*2].rabljen==false) {
  47. stablo->element[cvor*2].vrijednost=dijete_vrijednost;
  48. stablo->element[cvor*2].rabljen=true;
  49. }
  50. else
  51. cerr<<"Greska! (lijevo dijete cvora na trazenoj lokaciji vec postoji)"<<endl;
  52. }
  53. void CreateRightB(int dijete_vrijednost,int cvor,tbstablo *stablo) {
  54. if (stablo->element[cvor*2+1].rabljen==false) {
  55. stablo->element[cvor*2+1].vrijednost=dijete_vrijednost;
  56. stablo->element[cvor*2+1].rabljen=true;
  57. }
  58. else
  59. cerr<<"Greska! (lijevo dijete cvora na trazenoj lokaciji vec postoji)"<<endl;
  60. }
  61. void DeleteB(int cvor,tbstablo *stablo) {
  62. if (stablo->element[cvor*2].rabljen==true)
  63. DeleteB(cvor*2,stablo);
  64. if (stablo->element[cvor*2+1].rabljen==true)
  65. DeleteB(cvor*2+1,stablo);
  66. stablo->element[cvor].rabljen=false;
  67. }
  68. void InitB(int korijen_vrijednost,tbstablo *&stablo) {
  69. stablo=new tbstablo;
  70. memset(stablo,0,sizeof(tbstablo));
  71. stablo->element[1].vrijednost=korijen_vrijednost;
  72. stablo->element[1].rabljen=true;
  73. }
  74. bool ExistsLeftChild (int cvor,tbstablo *stablo) {
  75. if (stablo->element[cvor*2].rabljen==true)
  76. return true;
  77. return false;
  78. }
  79. bool ExistsRightChild (int cvor,tbstablo *stablo) {
  80. if (stablo->element[cvor*2+1].rabljen==true)
  81. return true;
  82. return false;
  83. }
  84. typedef tbstablo* tbinarno;
  85. typedef int tcvor;
  86. typedef int rcvor;

Report this snippet  

You need to login to post a comment.